我想做的第一件事就是为我的英语道歉,我会尽量写得不太明白。
另外,我已经尝试搜索该问题的解决方案,但直到现在我都没有找到一个。
代码有问题的部分如下:
//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);
}
}
});
这件事是可行的,但是如果例如我按下向左键,而我没有按下它,那么只要让它保持按下状态,那么“蝙蝠”将向左移动一次,然后延迟约1秒钟,然后继续在左方向。
我想在保持按住LEFT按钮的同时向左连续运动。任何人都知道如何解决此问题?
非常感谢您的时间和答复!!
克鲁兹
最佳答案
因此,OnKeyPressed
在第一次按下某个键时触发,然后在每秒钟左右按下一次。如果您希望某件事连续发生,而不是在OnKeyPressed
事件触发时发生,请考虑让OnKeyPressed
和OnKeyReleased
控制某种boolean keyIsPressed
,并在while循环中使用它。因此,OnKeyPressed
将设置keyIsPressed=true
,而OnKeyReleased
将执行相反的操作
关于java - 对用户键事件使用react而不会滞后JavaFx,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46795622/