I have a class InputHandler which implements the libGDX InputProcessor. It is used to handle arrow key and space bar events.
The keyDown and keyUp methods:
@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;
}
My problem is that if all three of the up arrow, left arrow and space bar keys are pressed, the last to be pressed does not trigger an event. However, the right and down arrow keys function perfectly.
Examples:
- Left arrow + space bar: Both setLeftPressed and setSpacePressed are triggered.
- Left arrow + up arrow + space bar: setSpacePressed is not triggered.
- Right arrow + up arrow + space bar: All three are triggered.
- Left arrow + up arrow + down arrow: All three are triggered.
- Up arrow + space bar: Both setUpPressed and setSpacePressed are triggered.
Thanks in advance for any help.