java - 让监听器等待javafx

标签 java javafx delay

我在这里检查了一些问题,但找不到正确的答案。也许我使用了错误的关键字进行搜索。但我发现的并没有帮助。这是我的问题。我有一些以某种方式滑动的圆和线。 我想要的是在动画执行后更新平衡变量。

DoubleProperty balance = new SimpleDoubleProperty();

我按如下方式更新余额:

if (shapeADone == false) {
    intersecting = arc.centerXProperty().lessThan(boldLine.getEndX() - 13);
    intersecting.addListener((obs, wasIntersecting, isNowIntersecting) -> {
        System.out.println("Collision!");
        animation1.stop();
        animation2.stop();
        animation3.stop();
    });
    again = true;
    balance.setValue(-1);
} else {
    fadeB();
    balance.setValue(1);
}

但是在主方法中我想做这样的事情

level1.balance.addListener(ov -> {
           System.out.println("The new value is " +
                   level1.balance.doubleValue());
           if (level1.balance.getValue()==1) {
              //delay setting scene
               primaryStage.setScene(scene2);
           }
       });

在设置 scene2 之前我需要执行一些动画,但由于平衡会立即更新,所以我的动画无法执行。 我想知道是否有办法延迟聆听平衡或设置场景。 我尝试了Thread.sleep和balance.wait,但它给出了运行时错误。

编辑:这个问题清楚地表明我缺乏关于javafx的知识。我想做的很简单,解决方案也更简单。当动画执行到最后时,我更新平衡值。我想要的只是确保动画显示到最后。

最佳答案

答案如下:

else{
                animation3.setOnFinished(event -> balance.setValue(1));
                fadeB();
            }

正如 Sedrick 的评论,我像这样更改了代码。 在需要执行的动画中添加 setOnFinish 可以解决该问题。它正在工作。

关于java - 让监听器等待javafx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50400756/

相关文章:

java - jStyleParser 无法解析我的 html 文件

java - 如何正确地将 .Text 属性绑定(bind)到 SimpleObjectProperty 的 Overridden .asString() 方法?

flutter - 如何更新变量以显示一些文本,有延迟,然后更新另一个也显示文本的变量?

javascript - 使用回调函数 Javascript 延迟/重复打印屏幕数组元素

java - univocity 基于动态列映射将 csv 解析为相同的 pojo

java - 具有集合和 set-method 属性的 Dozer Bean 映射器配置

java - Hibernate一对多关系级联删除

java - IntelliJ IDEA - 错误 : JavaFX runtime components are missing,,需要运行此应用程序

JavaFX WebView/WebEngine 缓存外部 JavaScript

javascript - jQuery 动画延迟