【发布时间】:2018-10-28 06:31:03
【问题描述】:
我在这里检查了一些问题,但找不到正确的答案。也许我使用了错误的关键字进行搜索。但我发现并没有帮助。所以这是我的问题。我有一些以某种方式滑动的圆圈和线条。 我想要的是在动画执行后更新平衡变量。
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);
}
但是在 main 方法中我想做这样的事情
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 的知识。我想做的很简单,解决方案更简单。当动画执行到最后时,我会更新 balance 的值。我想要的只是确保动画显示到最后。
【问题讨论】:
-
Making listener wait javafx这基本上就是listener的设计目的。 -
这里只是一个猜测,但运行你的动画。然后在最后/最长运行的动画上使用其
onFinish()方法更新余额。 stackoverflow.com/questions/37752207/…