2016-08-19 7 views
0

アニメーションの実行後、同じ矩形に対して2つの異なるアクションを実行しようとしていました。矩形は色を変更する必要があり、しかし、プログラムは最初のイベントを無視して2番目のイベントのみを実行します(切り替えたとしても)。どうすればそれを動作させることができますか?アニメーションが終了したときの2つのアクション(setOnFinished)

public void open() { 
    RotateTransition trans = new RotateTransition(Duration.seconds(1), rec); 
    trans.setToAngle(180); 
    trans.setAxis(Rotate.Y_AXIS); 
    trans.setOnFinished (event -> tex.setVisible(true)); 
    trans.setOnFinished (event -> rec.setFill(Color.WHITE)); 
    trans.play(); 

答えて

1

次のいずれかの

  1. ただ、同じイベントハンドラに入れ:

    trans.setOnFinished(event -> { 
        text.setVisible(true); 
        rec.setFill(Color.WHITE); 
    }); 
    
  2. またはstatusPropertyに変更リスナーを追加します。

    trans.statusProperty().addListener((obs, oldStatus, newStatus) -> { 
        if (newStatus == Animation.Status.STOPPED) { 
         text.setVisible(true); 
        } 
    }); 
    
    trans.statusProperty().addListener((obs, oldStatus, newStatus) -> { 
        if (newStatus == Animation.Status.STOPPED) { 
         rec.setFill(Color.WHITE); 
        } 
    }); 
    
+0

ありがとう! アニメーションが途中で行われている間に1つのアクションを実行することはできますか?私の四角形はY軸上で180度回転しているようです。 90度のときに色を変え、180度のときに文字を見えるようにする必要があります。 – Felix

+0

異なる質問ですが、要するに、タイムラインを使用して、関連するキーフレームにイベントハンドラを追加します。 –

関連する問題