JavaFX: задержка вращаемой анимации между циклами

Я создал анимацию для ImageView на основе RotatedTranstion, используя следующий код:

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, анимация не является непрерывной i.e существует небольшая задержка (пауза) между циклами анимации.

Я попытался посмотреть на API, но не могу понять, что вызывает эту задержку и как я могу получить избавиться от него.

2 ответов


кажущаяся пауза между каждым циклом вызвана интерполятор, который по умолчанию использует Interpolator.EASE_BOTH (таким образом, он замедляется в конце каждого цикла и ускоряется в начале).

чтобы удалить это, просто установите интерполятор в Interpolator.LINEAR:

rotateTransition.setInterpolator(Interpolator.LINEAR);

время для ускорения и замедления на каждом Transition цикл контролируется Interpolator. Значение по умолчанию Interpolator используется переход Interpolator.EASE_BOTH.

вы хотите линейный интерполяция поэтому добавьте это в свой код:

rotateTransition.setInterpolator(Interpolator.LINEAR);