从程序开始有这样的动画:
tr = new FadeTransition(Duration.millis(1000), rect);
tr.setFromValue(0.5);
tr.setToValue(0.1);
tr.setCycleCount(Timeline.INDEFINITE);
tr.setAutoReverse(true);
显然它无休止地循环。现在我想要一个能够停止它的功能,但只有在它消失之后才会停止。这意味着下一次它到达它的价值" (或者#34;来自值")它应该停止动画。
现在我知道我可以通过将循环计数设置为1来结束下一次迭代的动画。但是这只有在动画停止之前才有效。
tr.stop();
tr.setCycleCount(1);
tr.play();
但这意味着.play()函数重新启动动画,导致闪烁并不是非常漂亮。最后一个周期不会像以前那样继续。
如何顺利结束动画?
提前非常感谢!
答案 0 :(得分:1)
毕竟我自己找到了一个顺利的解决方案。 它不使用无限循环,而是使用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);
在最后一次转换结束时平稳退出动画的余地。