让听众等待javafx
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了让听众等待javafx相关的知识,希望对你有一定的参考价值。
我在这里查了一些问题,但我找不到合适的答案。也许我使用错误的关键字进行搜索。但我发现的并没有帮助。所以这是我的问题。我有一些圆圈和线条以某种方式滑动。我想要的是在动画执行后更新平衡变量。
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添加到需要执行的动画中可以解决问题。它正在发挥作用。
以上是关于让听众等待javafx的主要内容,如果未能解决你的问题,请参考以下文章