我正在尝试根据键盘按键进行移动:如果按下向上箭头,则向上移动等。

我的问题是我不知道如何捕获多个按键。

例如,如果向上箭头和向左箭头同时按下,我想向左走。

到目前为止,我所做的是:

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/

10-11 22:22
查看更多