Я пытаюсь анимировать круг по круговой траектории с помощью PathTransition и с помощью ползунка, пытаясь изменить его скорость. Даже если он не очень эффективен, он работает так, как я хочу.
Когда ползунок достигает 0 и после увеличения значения, круг не продолжается с того места, где он был (как я предполагаю), поэтому я вызываю pathTransition.pause (), когда ползунок дает значение 0 .
Пока все хорошо, но как только я увеличиваю значение ползунка, анимация начинает двигаться в обратном направлении.
Что могло вызвать это и почему? и как я могу это решить?
Вот GIF-изображение проблемы:
И мой код:
PathTransition pathTransition = new PathTransition();
pathTransition.setPath(outerPath);
pathTransition.setNode(circle1);
pathTransition.setDuration(Duration.seconds(1));
pathTransition.setInterpolator(Interpolator.LINEAR);
pathTransition.setCycleCount(Animation.INDEFINITE);
AnimationTimer timer = new AnimationTimer(){
long fps = 50L;
long interval = 1000000000L / fps;
long last = 0;
@Override
public void handle(long now) {
if(now - last > interval){
if(slider.getValue() == 0){
pathTransition.pause();
}
else{
pathTransition.setRate(slider.getValue());
pathTransition.play();
}
last = now;
}
}
};
timer.start();