如何检查是否多次按下了某个键

时间:2015-07-07 22:34:39

标签: java input keyboard game-engine

对于我用java编写的游戏,我需要在按键盘上的x键时打开对话框,然后再按一次x键再关闭它。问题是每当我按下x键时,它会在屏幕上显示对话一毫秒,然后再次消失。我认为这是因为它似乎认为按键被多次按下而不是只按一次。有没有什么方法可以确保我实际上必须释放密钥才能再次绑定到同一个密钥?

这是我用来检查按键的方法:

public class KeyManager implements KeyListener {

    private boolean[] keys;
    public boolean up, down, left, right, enter, x, c;

    public KeyManager() {
        keys = new boolean[256];
    }

    public void tick() {
        up = keys[KeyEvent.VK_W];
        down = keys[KeyEvent.VK_S];
        left = keys[KeyEvent.VK_A];
        right = keys[KeyEvent.VK_D];
        enter = keys[KeyEvent.VK_ENTER];
        x = keys[KeyEvent.VK_X];
        c = keys[KeyEvent.VK_C];
    }

    @Override
    public void keyPressed(KeyEvent e) {
        keys[e.getKeyCode()] = true;
        // System.out.println("Pressed");
    }

    @Override
    public void keyReleased(KeyEvent e) {
        keys[e.getKeyCode()] = false;
    }

    @Override
    public void keyTyped(KeyEvent e) {

    }
}

1 个答案:

答案 0 :(得分:0)

Java不“检查”是否按下某个键,它会侦听键事件。

以下是how to write a key listener

的文档

如果这是一个swing应用程序,使用KeyBindings要好得多。

我认为这是一个重复的问题your Question already has an answer here