Как приостановить AnimationTimer для установленного количества секунд? - PullRequest
1 голос
/ 28 мая 2019

В настоящее время я работаю над игрой, созданной с помощью JavaFX, и мне было интересно, как приостановить AnimationTimer на определенное количество секунд? Я попытался использовать Thread.sleep, но это приводит к зависанию всего окна. Буду признателен за любую помощь, я могу предоставить код, если это необходимо.

1 Ответ

3 голосов
/ 28 мая 2019

Вы можете создать 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(), если хотите приостановить таймер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...