我想做的第一件事是为我的英语道歉,我会尽力写得尽可能容易理解。 另外,我已经尝试过寻找这个问题的解决方案,但直到现在我还没有找到..
代码中有问题的部分如下:
//eventmanagement for the bat
scene.setOnKeyPressed (new EventHandler <KeyEvent> () {
public void moveBat(double speed) {
if ((speed > 0) && ((bat.getLayoutX() + bat.getWidth())<scene.getWidth())){
bat.setLayoutX(bat.getLayoutX() + speed);
}
if ((speed < 0) && ((bat.getLayoutX() > 0))){
bat.setLayoutX(bat.getLayoutX() + speed);
}
};
@Override
public void handle(KeyEvent event){
if (event.getCode().toString() == "RIGHT"){
this.moveBat(batVelocity);
}
if (event.getCode().toString() == "LEFT"){
this.moveBat(-batVelocity);
}
}
});
这个东西有效,但是如果我按下向左键,并且我不松开它,所以只要让它保持按下状态,那么“ bat ”就会向左移动一次,然后延迟大约1秒,然后继续向左移动。
我想在按住“LEFT”按钮的时间内向左方向连续移动。有人知道如何解决这个问题吗?
非常感谢您的宝贵时间和答复!!
克鲁兹
最佳答案
因此,OnKeyPressed
在第一次按下某个键时触发,然后每隔一秒左右触发一次。如果您希望某些事情连续发生,而不是在 OnKeyPressed
事件触发时发生,请考虑让 OnKeyPressed
和 OnKeyReleased
控制某种 boolean keyIsPressed
,并在某种 while 循环中使用它。因此,OnKeyPressed
将设置 keyIsPressed=true
,而 OnKeyReleased
将执行相反的操作
关于java - 对用户按键事件使用react,无滞后 JavaFx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46795622/