Java - 希望getKeyCode只注册一次

时间:2015-11-06 19:06:45

标签: java

我目前正在开发一款小游戏。我使用getKeyCode移动我的角色,但事实是,如果按住按钮,我不希望你能够继续移动。无论如何我可以使用getKeyCode仅在第一次点击时注册然后不会注册,直到我释放按钮然后再次按下?

else if (event.getKeyCode()== KeyEvent.VK_UP)
{
    spelare1.setLocation(spelare1.getX(),spelare1.getY()-50);
}

这就是它目前的样子。

2 个答案:

答案 0 :(得分:0)

我认为你让KeyEvents感到困惑。 VK_UP向上箭头键。使用KeyEvent.KEY_RELEASED对已发布的密钥做出反应。

答案 1 :(得分:0)

您可以保留一个布尔值,指示当前是否按下了该键。然后你可以在每次按下后做出反应,如下例所示:

public static void main(String[] args) {

    JFrame f = new JFrame();

    f.addKeyListener(new KeyAdapter() {
        private boolean pressed;
        @Override
        public void keyReleased(KeyEvent e) {
            pressed = false;
        }
        @Override
        public void keyPressed(KeyEvent e) {
            if (!pressed) {
                System.out.println("Key pressed: " + e.getKeyCode());
                pressed = true;
            }
        }
    });

    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            f.setVisible(true);
        }
    });
}

根据您的需要,您可能希望为每个键设置一个单独的状态,或者只是一个共享状态。