同时按键时不接收KeyEvents

时间:2015-05-12 04:51:28

标签: java awt keylistener keyevent

我在java中编写一个游戏,在同一个键盘上有两个玩家。如果其中一个玩家持有他们的前进按钮而第二个玩家按下他的前进按钮,则第一个玩家停止。这反过来也发生了,我不知道如何解决它。

  addKeyListener(new KeyListener() {

        @Override
        public void keyTyped(KeyEvent e) {

        }
        @Override
        public void keyPressed(KeyEvent e) {
            paddle.keyPressed(e);
            paddletwo.keyPressed(e);
        }
        @Override
        public void keyReleased(KeyEvent e) {
            paddle.keyReleased(e);
            paddletwo.keyReleased(e);
        }

在每个桨类中我也有:

public void keyReleased (KeyEvent e) {
    ya = 0;
}

public void keyPressed(KeyEvent e) {
   if(e.getKeyCode() == KeyEvent.VK_UP)
       ya = -pong.speed;
   if(e.getKeyCode() == KeyEvent.VK_DOWN)
       ya = pong.speed;
}

Player 2使用VK_W和VK_S而不是UP和DOWN。

1 个答案:

答案 0 :(得分:0)

这与实际的硬件键盘有关。为了降低成本,控制线是共享的,因此无法同时按下某个键组合。

要么购买高端键盘,要么小心选择按键,这样干扰最小(当然,使用的按键越多越难,并且会产生一些看起来很有趣的控制)。

Here's解释的原因。

编辑: 实际上,这不应该影响何时只涉及2个密钥,只有3个或更多。