В настоящее время я работаю над игрой, созданной с помощью 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()
, когда захотите приостановить таймер.