2016-10-25 133 views
0

我有一個Java應用程序,當我點擊一個按鈕時,ImageView會在屏幕上移動一定的數量。我該如何做到這一點,以便每次點擊按鈕時都會運行動畫?我知道如何製作一個點擊按鈕並讓它運行一個功能。我只是不知道如何正確使用動畫來動態運行新的動畫。如何動態播放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(); 
} 

上述方法將會播放一次。當我嘗試用新值再次運行move()方法時,沒有任何反應。

+0

獲取時間軸對象並再次運行timeline.play() - 這樣做的竅門? – MordechayS

+0

是的。有用!!!哇,我完全錯過了一些東西,因爲我曾嘗試過,但我可能有一些錯誤。現在,我已經嘗試了一遍。謝謝。 –

+0

我發佈了一個完整的答案和一個實際的代碼片段等。如果我是有幫助的,我會喜歡它,如果你能接受我的答案 – MordechayS

回答

1

Timeline包含所有動畫「步驟」(又名:KeyFrame)。

move方法

,你應該從moveAnimation方法分配Timeline類型的變量與返回值,就像這樣:

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

然後調用timeline.play()當你想重用動畫。

祝你好運!