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