JavaFX PathTransition с использованием метода pause () - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь анимировать круг по круговой траектории с помощью PathTransition и с помощью ползунка, пытаясь изменить его скорость. Даже если он не очень эффективен, он работает так, как я хочу.

Когда ползунок достигает 0 и после увеличения значения, круг не продолжается с того места, где он был (как я предполагаю), поэтому я вызываю pathTransition.pause (), когда ползунок дает значение 0 .

Пока все хорошо, но как только я увеличиваю значение ползунка, анимация начинает двигаться в обратном направлении.

Что могло вызвать это и почему? и как я могу это решить?

Вот GIF-изображение проблемы:

gif of problem

И мой код:

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...