JavaFX:循环之间的旋转动画延迟

我使用以下代码基于RotatedTranstion为ImageView创建了一个动画:

ImageView icon = ImageCache.getImage("refresh.png"); RotateTransition rotateTransition = new RotateTransition(Duration.millis(2000), icon); rotateTransition.setByAngle(360.0); rotateTransition.setCycleCount(Timeline.INDEFINITE); rotateTransition.play(); 

这导致以下动画:

行动中的轮换

你可能已经注意到动画gif,动画不连续,即动画周期之间有一个小的延迟(暂停)。

我试图看看API,但无法弄清楚导致这种延迟的原因以及我如何摆脱它。

每个周期之间的明显暂停是由内插器引起的, 内插器默认使用Interpolator.EASE_BOTH (因此它在每个周期结束时减速并在开始时加速)。

要删除它,只需将插值器设置为Interpolator.LINEAR

 rotateTransition.setInterpolator(Interpolator.LINEAR); 

每个Transition周期的加速和减速时间由内Interpolator器控制。 Transition使用的默认InterpolatorInterpolator.EASE_BOTH

您需要线性插值,因此请将其添加到您的代码中:

 rotateTransition.setInterpolator(Interpolator.LINEAR);