Я пытаюсь добавить FadeTransition
в свой класс предварительного загрузчика, поэтому переход между предварительным загрузчиком и основным приложением более плавный.
Если я использую метод handleStateChangeNotification
предварительного загрузчика, затухание незапустить и предварительный загрузчик остается открытым.
@Override
public void handleStateChangeNotification(StateChangeNotification stateChangeNotification) {
if (stateChangeNotification.getType() == StateChangeNotification.Type.BEFORE_START) {
FadeTransition fadeTransition = new FadeTransition(Duration.millis(2000));
fadeTransition.setNode(preloaderStage.getScene().getRoot());
fadeTransition.setFromValue(1.0);
fadeTransition.setToValue(0.0);
fadeTransition.setOnFinished(event ->
preloaderStage.close());
fadeTransition.play();
}
}
Я отладил код, и fadeTransition.play()
вызывается, но событие setOnFinished этого не делает, поэтому предварительный загрузчик также остается открытым.
Если я добавлю тот же код в handleApplicationNotification
метод работает отлично.Затухание воспроизводится, и сцена закрывается должным образом:
@Override
public void handleApplicationNotification(PreloaderNotification info) {
if (info instanceof Preloader.ProgressNotification) {
preloaderController.getProgressBar().setProgress(((Preloader.ProgressNotification) info).getProgress());
if (preloaderController.getProgressBar().getProgress() == 1.0) {
FadeTransition fadeTransition = new FadeTransition(Duration.millis(2000));
fadeTransition.setNode(preloaderStage.getScene().getRoot());
fadeTransition.setFromValue(1.0);
fadeTransition.setToValue(0.0);
fadeTransition.setOnFinished(event ->
preloaderStage.close());
fadeTransition.play();
}
}
}
Мой вопрос: почему переход не воспроизводится с handleStateChangeNotification
.