JavaFX:暂停直到动画结束

时间:2015-09-11 21:49:09

标签: java animation javafx pause

我有一个基本的javafx程序,其中一个模拟电梯的矩形必须在向上和向下移动时上下移动。并且' 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();

这样的事情存在吗?你会如何解决我的问题?

1 个答案:

答案 0 :(得分:1)

您可以在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();
    }
}