内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我是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;