2016-08-19 17 views
0

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

私は、タイムラインを使用し、関連するキーフレームにイベントハンドラを追加するように言われましたが、実際にどのようにしたらよいかわかりません。

public void open() { 
    RotateTransition trans = new RotateTransition(Duration.seconds(1), rec); 
    trans.setOnFinished(event -> { 
    text.setVisible(true); 
    rec.setFill(Color.WHITE); 
    }); 
    trans.play(); 
} 

答えて

1

Timelineあなたが特定の時間にイベントをトリガと同様の性質をアニメーション化することができます。次の例では、長方形のrotateプロパティは、最初の回転と最後の回転の値として2 KeyFrame秒を使用して0〜180までアニメーションされます(最初の回転は必要ありません。この場合、色のためにもう少し作業が必要になります)。追加KeyFrameRectanglefillを変更EventHandler<ActionEvent>をトリガー:

Rectangle rec = new Rectangle(50, 50, 50, 50); 

Duration rotateDuration = Duration.seconds(5); 
Timeline timeline = new Timeline(
     new KeyFrame(Duration.ZERO, new KeyValue(rec.rotateProperty(), 0)), // initial rotate 
     new KeyFrame(rotateDuration.divide(2), evt -> { 
      // event for halfway through 
      rec.setFill(Color.RED); 
     }), 
     new KeyFrame(rotateDuration, new KeyValue(rec.rotateProperty(), 180)) // end value of rotate 
); 

timeline.play(); 

あなたはピボットポイントを指定する必要がある場合は、あなたもNodeRotate transformを適用し、それがangleプロパティのアニメーション化できます。

Rotate rotate = new Rotate(0, pivotX, pivotY); 
rec.getTransforms().add(rotate); 

... 
Timeline timeline = new Timeline(
     new KeyFrame(Duration.ZERO, new KeyValue(rotate.angleProperty(), 0)), 
     ... 
+0

ありがとうございました! 私の三角形の中心を中心に回転が必要です。私はRotateTransitionを使っていましたが、タイムラインでは動作しませんでしたか? – Felix

+0

@Felix 'Timeline'では動作しませんが、' Node'に適用された 'Rotate'トランスフォームの' angle'プロパティをアニメートすることができます。 – fabian

+0

はい、今は完璧に動作します! 'Rotate rt = new Rotate(0、20、30、0、Rotate.Y_AXIS)' – Felix

関連する問題