我有一个实现libGDX InputProcessor的类InputHandler。它用于处理箭头键和空格键事件。
@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;
}
我的问题是如果按下所有三个向上箭头,向左箭头和空格键,则最后一个按下不会触发事件。但是,向右和向下箭头键功能完美。
提前感谢您的帮助。
答案 0 :(得分:1)
这可能不是因为您的代码或Libgdx,它可能是键盘的问题。有时,在大多数普通键盘中,如果它们靠近在一起,则一次按下3个(或更多)键将不起作用。这种现象称为keyboard ghosting。我注意到,与其他组合相比,不适合你的按键相对更近(物理距离)。 尝试在提供的链接中使用相同的组合,并尝试使用其他键盘/机器来测试该代码。如果问题出在您的键盘上,您可能需要考虑让代码支持变量键定义,而不是使用类似键盘的任何人使用硬编码键。