如何在按下按键时停止移动对象?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (181)

我是Java编程的初学者,我正在制作一个应用程序,需要一个对象在一个充满方块的网格中移动。

对象应该一次只移动一个方格,如果用户想要移动到另一个方格,他们必须再次按下该键。我的移动方法如下:

public void move() {
    x += dx;
    y += dy;
}

我正在使用KeyListener接口来实现keyPressed,keyTyped和keyReleased方法,我的条件类似于KeyPressed下面的片段:

//KeyPressed
int c = e.getKeyCode();

if (c == KeyEvent.VK_UP) {
    player.setDy(-5);
}

这允许对象自由移动。但是,只要按下向上箭头,它就会明显继续移动。

有没有办法让对象向上移动一次-5,然后停止,即使按键仍被按下?

我不确定是否需要更改我的move方法或KeyListener方法来执行此操作。

提问于
用户回答回答于
public void keyTyped(KeyEvent arg0) {
   if(arg0.getKeyCode() == KeyEvent.VK_UP)
   {
       synchronized(player)
       {
          player.setDy(-5);
       }
   }
}

现在你要做的就是确保setDy按预期工作,因此只设置一次位置。

用户回答回答于

最简单的方法是添加一个布尔值,以指示按下移动键。

班级成员:boolean movingKeyPressed = false

按键:

if (movingKeyPressed) {
   return;
} else {
   // do stuff
   movingKeyPressed = true;
}

在密钥释放方法中:

movingKeyPressed = false;

扫码关注云+社区

领取腾讯云代金券