在我的代码中,当检测到箭头键时,字符会相应地移动。这是通过定时器和定时器任务来安排角色的“移动”来完成的。然而,当按下另一个键时,会导致角色翻转并完全发生故障。我正在寻找一种方法来阻止用户按下键盘上的任何键,直到角色完成移动。
我的代码如下:
@FXML
public void moveCharacter(KeyEvent event) {
switch (event.getCode()){
case D, RIGHT:
try {
moveForward();
} catch (URISyntaxException | InterruptedException e) {
throw new RuntimeException(e);
}
break;
case A, LEFT:
try {
moveBack();
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
break;
}
}
起初,我想用一个定时器来防止键盘在设定的时间后输入。这是这样做的:
final long THRESHOLD = 1_500_000_000L;
private long lastMoveNanos;
long now = System.nanoTime();
if (lastMoveNanos <= 0L || now - lastMoveNanos >= THRESHOLD) {
//switch case here
}
lastMoveNanos = now;
然而,它没有起作用,我的角色仍然出现了故障。
我也在切换案例中使用了Thread.sleep,但它只是阻止了我的角色移动并将其传送到目的地。
提前谢谢你的任何建议。