Я проверил некоторые вопросы здесь, но не смог найти правильный ответ. Возможно, я использую неправильные ключевые слова для поиска. Но то, что я нашел, не помогло. Вот мой вопрос. У меня есть несколько кругов и линий, которые скользят определенным образом.
Я хочу обновить балансную переменную после выполнения анимации.
DoubleProperty balance = new SimpleDoubleProperty();
И я обновляю баланс следующим образом:
if (shapeADone == false) {
intersecting = arc.centerXProperty().lessThan(boldLine.getEndX() - 13);
intersecting.addListener((obs, wasIntersecting, isNowIntersecting) -> {
System.out.println("Collision!");
animation1.stop();
animation2.stop();
animation3.stop();
});
again = true;
balance.setValue(-1);
} else {
fadeB();
balance.setValue(1);
}
Но в основном методе я хочу сделать что-то вроде этого
level1.balance.addListener(ov -> {
System.out.println("The new value is " +
level1.balance.doubleValue());
if (level1.balance.getValue()==1) {
//delay setting scene
primaryStage.setScene(scene2);
}
});
У меня есть анимация перед настройкой scene2, но, поскольку баланс мгновенно обновляется, моя анимация не может быть выполнена.
Я хочу знать, есть ли способ отложить баланс прослушивания или установить сцену.
Я пробовал Thread.sleep и balance.wait, но он выдает ошибки во время выполнения.
Редактировать: Этот вопрос ясно показывает, что у меня не было знаний о javafx. То, что я хочу сделать, просто, а решение еще проще. Когда анимация выполняется до конца, я обновляю значение баланса. Все, что я хотел, это убедиться, что анимация показана до конца.