2016-10-25 4 views
0

ボタンをクリックすると、ImageViewが一定量の画面を移動するJavaアプリケーションがあります。ボタンをクリックするたびにアニメーションが実行されるようにするにはどうすればよいですか?クリックボタンを作って機能を実行させる方法は分かっています。アニメーションを適切に使って新しいアニメーションを動的に実行する方法はわかりません。JavaFXアニメーションを動的に再生する方法

public Timeline moveAnimation(double x, double y) { 
    // horizontal movement 
    KeyValue kv = new KeyValue(turtle.xProperty(), x); 
    KeyFrame kf = new KeyFrame(Duration.millis(500), kv); 
    timeline.getKeyFrames().add(kf); 

    // vertical movement 
    KeyValue kv2 = new KeyValue(turtle.yProperty(), y); 
    KeyFrame kf2 = new KeyFrame(Duration.millis(500), kv2); 
    timeline.getKeyFrames().add(kf2); 

    return timeline; 
} 

public void move(double x, double y) { 
    moveAnimation(x, y).play(); 
} 

上記の方法は1回再生されます。新しい値で再度move()メソッドを実行しようとすると、何も起こりません。

+0

タイムラインオブジェクトを取得し、timeline.play()をもう一度実行してください。 – MordechayS

+0

はい。できます!!!うわー、私は前にそれを試したので、何かを完全に逃しましたが、おそらくそれにバグがありました。それは私がもう一度それを試したので動作します。ありがとうございました。 –

+0

私は実際のコードスニペットなどで完全な回答を投稿しました。もし私が助けてくれれば、私の答えを受け入れることができたら大歓迎です – MordechayS

答えて

1

Timelineにはアニメーション「ステップ」(AKA:KeyFrame)がすべて含まれています。 move方法で

、あなたはこのようなmoveAnimationメソッドから返された値とタイプTimelineの変数を割り当てる必要があります。

public void move(double x, double y) { 
    Timeline timeline = moveAnimation(x, y).play(); 
    //use timeline wherever... 
} 

そしてアニメーションを再利用する場合timeline.play()を呼び出します。

幸運を祈る!

関連する問題