2017-07-06 25 views
0

退出無限的過渡有這樣的開始與程序的動畫:JavaFX的動畫:通過淡出

tr = new FadeTransition(Duration.millis(1000), rect); 
tr.setFromValue(0.5); 
tr.setToValue(0.1); 
tr.setCycleCount(Timeline.INDEFINITE); 
tr.setAutoReverse(true); 

顯然,無休止地循環。現在我想要一個停止這個功能的功能,但只有在它淡出之後。這意味着只要下次達到其「價值」(或「從價值」)它應該停止動畫。

現在我知道我可以通過將循環計數設置爲1來結束下一次迭代的動畫。但是,只有在動畫已經停止之前,它纔會起作用。

tr.stop(); 
tr.setCycleCount(1); 
tr.play(); 

但是,這意味着.play()函數會重新啓動動畫,導致一個不太漂亮的閃爍。這最後一個週期不會繼續以前的情況。

如何順利結束動畫?

巨大的感謝提前!

回答

0

畢竟我自己找到了一個順利的解決方案。 代替使用無限循環的,它使用的2週期和精事件剛剛重新播放動畫:

tr = new FadeTransition(Duration.millis(1000), rect); 
tr.setFromValue(0.1); 
tr.setToValue(0.5); 
tr.setAutoReverse(true); 
tr.setCycleCount(2); 
tr.play(); 

tr.setOnFinished((ActionEvent event) -> tr.play()); 

接着的

tr.setOnFinished(null); 

足夠簡單的呼叫順利退出動畫在上次轉換的結束。