JavaFX:暂停直到动画完成

标签 java animation javafx pause

我有一个基本的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();

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

最佳答案

您可以在 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:暂停直到动画完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32532613/

相关文章:

JavaFX WebView 无法使用不受信任的 SSL 证书工作

JavaFX 矩形不会接触右侧

java - Java keystore 中的中间 CA 证书

swift - 在向上和向下平移时使用多次旋转为 UIView 设置动画

java - 即使不可见,如何让tableRow闪烁? (JavaFX)

javascript - anime.js 跑灯动画

javascript - JS 切换动画(animate.css)?

java - 在Java中生成并使用两个 key 进行加密和解密

java - 如何使用ExecutorService调度多个任务

java - 如何捕获 "Invalid hex digit"?