Итак, я хочу иметь возможность изменять скорость моей анимации, изменяя продолжительность. Я знаю, что Java Docs говорит, что это невозможно, но я не вижу проблем с остановкой анимации, изменением Duration и началом с того места, где оно остановилось. С этой реализацией мой круг просто останавливается и больше не хочет двигаться. Могу ли я сделать это как-нибудь? Если я не могу, как я могу сделать анимацию с изменяемой скоростью?
EDIT:
Это на самом деле работает, но когда я изменяю Длительность, то меняется начальная точка, а конечная точка - нет, поэтому она становится все ближе и ближе к конечной точке, пока не остановится (если только я не изменю скорость, когда круг близок к начальная отправная точка). Есть идеи для алгоритма, который будет влиять только на скорость анимации?
public void initialize() {
TranslateTransition transition = new TranslateTransition();
transition.setDuration(Duration.seconds(2));
transition.setToX(162);
transition.setToY(72);
transition.setAutoReverse(true);
transition.setCycleCount(TranslateTransition.INDEFINITE);
transition.setNode(myCircle);
transition.play();
mySlider.valueProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue arg0, Object arg1, Object arg2) {
transition.stop();
Duration d = transition.getDuration();
transition.setDuration(Duration.seconds(mySlider.getValue()));
transition.playFrom(d);
System.out.println(mySlider.getValue());
}
});
}