我目前正在使用JavaFX制作游戏,我想知道如何将AnimationTimer暂停一定的秒数?我尝试使用Thread.sleep,但它导致整个窗口冻结。任何帮助将不胜感激,我可以根据需要提供代码。
答案 0 :(得分:3)
您可以创建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()
。