簡體   English   中英

使偵聽器等待javafx

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM