2017-07-06 17 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); 

足够简单的呼叫顺利退出动画在上次转换的结束。