有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 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();

这样的事情存在吗?你怎么解决我的问题


共 (1) 个答案

  1. # 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();
        }
    }