У меня есть базовая программа javafx, где прямоугольник, имитирующий лифт, должен двигаться вверх и вниз при нажатии кнопок «вверх» и «вниз». Я успешно реализован код, чтобы сделать это ниже:JavaFX: пауза до окончания анимации
public void handle(ActionEvent event) {
if (event.getSource() == upButton) {
//this should all be put into a 'slideNode' method
TranslateTransition translateTransition1 = new TranslateTransition(Duration.millis(500), theElevator);
translateTransition1.setByX(0);
translateTransition1.setByY(-50);
translateTransition1.setCycleCount(1);
translateTransition1.setAutoReverse(false);
translateTransition1.play();
}
}
вопрос, который я должен решить это то, что происходит, когда лифт находится на полпути через это движение, и кнопка будет нажата снова - лифт не получает полный если бы я дождался, пока он не достигнет своего первого пункта назначения, чтобы снова нажать кнопку!
Я понимаю, почему это происходит, но я хотел бы знать, есть ли способ решить эту проблему. Я предполагаю, что должен быть какой-то кусок API, похожий на следующий, который я могу бросить в конце моего кода:
Pause pause = new Pause(Duration.millis(500));
pause.pause();
Существует ли такая вещь? Как бы вы решили мою проблему?
Вы можете добавить переменную в вашей translateTransition1. Что-то вроде isPlaying, которое перевернулось до истины в начале анимации, а затем false в конце. Таким образом, вы можете проверить, воспроизводится ли это, прежде чем запускать анимацию. –
«TranslateTransition» уже имеет ['statusProperty'] (http://docs.oracle.com/javase/8/javafx/api/javafx/animation/Animation.html#statusProperty), который вы можете наблюдать. Это значение будет 'RUNNING' во время анимации. –
Джеймс, если бы это был ответ, а не комментарий, я бы выбрал его :) –