当按下多个键时,libGDX InputProcessor无法正常工作



我有一个类InputHandler,它实现了libGDX InputProcessor。它用于处理箭头键和空格键事件。

keyDown和keyUp方法:

@Override
public boolean keyDown(int keycode) {
    switch (keycode) {
        case Keys.SPACE:
            gameWorld.setSpacePressed(true);
            break;
        case Keys.LEFT:
            gameWorld.setLeftPressed(true);
            break;
        case Keys.RIGHT:
            gameWorld.setRightPressed(true);
            break;
        case Keys.UP:
            gameWorld.setUpPressed(true);
            break;
        case Keys.DOWN:
            gameWorld.setDownPressed(true);
            break;
        default:
    }
    return true;
}
@Override
public boolean keyUp(int keycode) {
    switch (keycode) {
        case Keys.SPACE:
            gameWorld.setSpacePressed(false);
            break;
        case Keys.LEFT:
            gameWorld.setLeftPressed(false);
            break;
        case Keys.RIGHT:
            gameWorld.setRightPressed(false);
            break;
        case Keys.UP:
            gameWorld.setUpPressed(false);
            break;
        case Keys.DOWN:
            gameWorld.setDownPressed(false);
            break;
        default:
    }
    return true;
}

我的问题是,如果上箭头、左箭头和空格键中的三个都按下了,最后一个按下的键不会触发事件。但是,向右和向下箭头键的功能非常完美。

示例:

  • 左箭头+空格键:同时触发setLeftPressed和setSpacePressed
  • 向左箭头+向上箭头+空格键:未触发setSpacePressed
  • 向右箭头+向上箭头+空格键:三者都被触发
  • 向左箭头+向上箭头+向下箭头:三者都被触发
  • 向上箭头+空格键:同时触发setUpPressed和setSpacePressed

提前感谢您的帮助。

这可能不是因为您的代码或Libgdx,可能是您的键盘出现了问题。有时,在大多数普通键盘中,如果同时按下3个(或更多)键,它们靠得很近,就无法工作。这种现象被称为键盘重影。我注意到,与其他组合相比,不适合你的键彼此相对更近(在物理距离上)。尝试在提供的链接中使用相同的组合,也许可以尝试使用另一个键盘/机器来测试该代码。如果问题出在你的键盘上,你可能需要考虑让你的代码支持可变键定义,而不是为任何使用类似键盘的人提供硬编码的定义。

相关内容

  • 没有找到相关文章

最新更新