如何将动画计时器暂停设定的秒数?



我目前正在开发一款用JavaFX制作的游戏,我想知道如何将AnimationTimer暂停一段时间?我尝试使用Thread.sleep,但它导致整个窗口冻结。任何帮助将不胜感激,如果需要,我可以提供代码。

您可以创建一个在经过一定时间后启动计时器的PauseTransition

void pauseTimerForDuration(AnimationTimer timer, Duration duration) {
PauseTransition pt = new PauseTransition(duration);
pt.setOnFinished(event -> timer.start());
timer.stop();
pt.play();
}

注意:这使用javafx.util.Duration,而不是java.time.Duration

如果你想要一些可以重用的东西,那么你可以尝试一个Timeline.

Timeline createPauseTimerTimeline(AnimationTimer timer, Duration duration) {
return new Timeline(
new KeyFrame(Duration.ZERO, event -> timer.stop()),
new KeyFrame(duration, event -> timer.play())
);
}

然后将Timeline存储在某个地方,并在要暂停计时器时调用playFromStart()

最新更新