如何在指定的时间间隔内暂停AnimationTimer?

时间:2019-05-28 03:29:06

标签: java javafx

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

1 个答案:

答案 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()