我正在尝试根据键盘按键进行移动:如果按下向上箭头,则向上移动等。
我的问题是我不知道如何捕获多个按键。
例如,如果向上箭头和向左箭头同时按下,我想向左走。
到目前为止,我所做的是:
shell.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.keyCode == SWT.ARROW_DOWN)
setUserCommand(2);
else if(e.keyCode == SWT.ARROW_UP)
setUserCommand(8);
else if(e.keyCode == SWT.ARROW_LEFT)
setUserCommand(4);
else if(e.keyCode == SWT.ARROW_RIGHT)
setUserCommand(6);
}
});
如何捕获多个按键?
最佳答案
您可以创建按键的抽象,也许只是跟踪它的布尔值,然后在某个适当的时间进行测试(也许在keyPressed
方法中,或者在您创建的某些checkKeysThatArePressedMethod
中被称为在游戏循环中的某个时间(如果您拥有的话)。
boolean upPressed = false;
boolean downPressed = false;
...
@Override
public void keyPressed(KeyEvent e) {
if(e.keyCode == SWT.ARROW_DOWN){
downPressed = true;
if (upPressed){
// both are pressed here
}
}
else if(e.keyCode == SWT.ARROW_UP){
upPressed = true;
if (downPressed){
// both are pressed here
}
}
}
@Override
public void keyReleased(KeyEvent e) {
if(e.keyCode == SWT.ARROW_DOWN)
downPressed = false;
else if(e.keyCode == SWT.ARROW_UP)
upPressed = false;
}
关于java - 如何将按键监听器用于宏操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23389958/