Изменить скорость последовательного перехода с помощью ползунка Java FX - PullRequest
0 голосов
/ 20 января 2019

У меня есть последовательный переход, и у меня есть ползунок.Слайдер будет использоваться для изменения скорости последовательного перехода (во время воспроизведения анимации).Однако я не слишком уверен, как это сделать.Я попытался использовать ползунок, чтобы изменить длительность анимации, но, похоже, он не работал, длительность просто осталась равной 0, и поэтому анимация даже не воспроизводилась.

Было бы замечательно, если бы кто-то мог показатьНебольшой упрощенный пример моей проблемы.

Спасибо.

РЕДАКТИРОВАТЬ:

Таким образом, привязка значения ползунка к свойству rate позволяет мне эффективно изменять скорость анимации.Однако я хочу, чтобы значение моего ползунка начиналось с середины, которое я пробовал:

animationSpeedSlider = new Slider(1, 4, 2);

Но это не сработало.Я также попытался установить значение вручную, например: animationSpeedSlider = new Slider (1, 4, 2);animationSpeedSlider.setValue (2);

Это, похоже, тоже не сработало, в обоих случаях значение ползунка все еще находится в крайнем левом положении.

Кроме того, я хочу, чтобы скорость не была равна 0, когда она находится в крайнем левом положении, поэтому я установил нижнюю границу на 1, но, похоже, она по-прежнему останавливает анимацию.

1 Ответ

0 голосов
/ 20 января 2019

Единственный способ настроить скорость анимации без остановки анимации - это свойство rate: продолжительность цикла анимации делится на значение свойства rate, чтобы определить эффективную продолжительность цикла.

Пример

@Override
public void start(Stage stage) throws Exception {
    Duration d = Duration.seconds(1);

    Rectangle rect = new Rectangle(50, 50);
    TranslateTransition t1 = new TranslateTransition(d, rect);
    t1.setToX(350);
    TranslateTransition t2 = new TranslateTransition(d, rect);
    t2.setToY(350);
    TranslateTransition t3 = new TranslateTransition(d, rect);
    t3.setToX(0);
    TranslateTransition t4 = new TranslateTransition(d, rect);
    t4.setToY(0);

    SequentialTransition transition = new SequentialTransition(t1, t2, t3, t4);
    transition.setCycleCount(Animation.INDEFINITE);
    transition.play();

    Pane pane = new Pane(rect);
    pane.setPrefSize(400, 400);

    Slider slider = new Slider(0.1, 4, 1);
    transition.rateProperty().bind(slider.valueProperty());

    stage.setScene(new Scene(new VBox(slider, pane)));
    stage.show();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...