JavaFX:暂停直到动画完成
JavaFX: pause until animation finishes
我有一个基本的 javafx 程序,其中模拟电梯的矩形必须在按下 'up' 和 'down' 按钮时上下移动。我已经成功地实现了以下代码:
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();
有这种东西吗?你会如何解决我的问题?
您可以在 TranslateTransition
播放时禁用该按钮:
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);
translateTransition.statusProperty().addListener((obs, oldStatus, newStatus) ->
button.setDisable(newStatus==Animation.Status.RUNNING));
translateTransition1.play();
}
}
我有一个基本的 javafx 程序,其中模拟电梯的矩形必须在按下 'up' 和 'down' 按钮时上下移动。我已经成功地实现了以下代码:
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();
有这种东西吗?你会如何解决我的问题?
您可以在 TranslateTransition
播放时禁用该按钮:
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);
translateTransition.statusProperty().addListener((obs, oldStatus, newStatus) ->
button.setDisable(newStatus==Animation.Status.RUNNING));
translateTransition1.play();
}
}