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

JavaFX Animations: Quit an infinite transition by fading out

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

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

显然它会无限循环。现在我想要一个停止它的功能,但只有在它淡出之后。这意味着下次它到达 "to value"(或 "from value")时应该停止动画。

现在我知道我可以通过将循环计数设置为 1 来在下一次迭代中结束动画。但是,这仅在动画之前已停止时有效。

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

但这意味着 .play() 函数会重新启动动画,导致闪烁,这并不是很漂亮。最后一个循环不会继续它之前的位置。

怎样才能顺利结束动画?

非常感谢!

总算自己找到了一个顺利的解决办法。 它没有使用无限循环,而是使用一个循环 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); 

足以在最后一个过渡结束时顺利退出动画。