JavaFX动画:通过淡出退出无限过渡

时间:2017-07-06 17:57:12

标签: animation javafx transition transitions

从程序开始有这样的动画:

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()函数重新启动动画,导致闪烁并不是非常漂亮。最后一个周期不会像以前那样继续。

如何顺利结束动画?

提前非常感谢!

1 个答案:

答案 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); 

在最后一次转换结束时平稳退出动画的余地。