[英]Making listener wait javafx
我在這里檢查了一些問題,但找不到正確的答案。 也許我使用錯誤的關鍵字進行搜索。 但是我發現並沒有幫助。 所以這是我的問題。 我有一些以某種方式滑動的圓和線。 我想要的是在動畫執行后更新balance變量。
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添加到需要執行的動畫可以解決該問題。 工作正常
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.