Переведите прямоугольник для сцены с помощью таймера в JavaFX

У меня есть прямоугольник в сцене, который я хочу перевести на линейный путь в JavaFX с помощью таймера. Для каждых миллисекунд mSecs я хочу, чтобы прямоугольник переводил расстояние d вдоль плоскости xy в JavaFX. Я знаю, как просто перевести что-то с помощью rec.setX(x) и rec.setY(y) и заставить его двигаться. Я не хочу использовать анимацию или какой-либо сложный класс, я просто хочу, чтобы таймер запускался, и каждый раз, когда он достигает определенного приращения, я хочу переводить этот прямоугольник на определенную величину. Простая, базовая анимация, как флипбук. Может ли кто-нибудь помочь и/или направить меня к правильному API класса?


person JCoder    schedule 23.03.2015    source источник
comment
Почему бы просто не использовать TranslateTransition? Это именно то, для чего он предназначен.   -  person James_D    schedule 24.03.2015
comment
Я попробую это, спасибо за ваш быстрый ответ.   -  person JCoder    schedule 24.03.2015
comment
Обратите внимание, почему вы хотите избежать анимации. Обратите внимание, что API-интерфейсы анимации спроектированы таким образом, что они пропускают кадры, когда ваша система находится под нагрузкой, вместо того, чтобы замедлять анимацию. В большинстве случаев вам нужен фреймдроп. Исключение составляет программирование симуляции, и в этом случае вы не можете позволить себе пропустить шаг симуляции.   -  person Tomas Mikula    schedule 24.03.2015
comment
Мне нужен прямоугольник, который я могу перевести в определенную позицию. Первая фаза заключалась в том, чтобы выяснить, как ее перевести, вторая фаза — научиться переводить ее в определенную позицию.   -  person JCoder    schedule 24.03.2015


Ответы (1)


Поместите прямоугольник на сцену. Рассчитайте dx и dy в зависимости от вашей начальной и конечной точки или, в вашем случае, в зависимости от d и угла. Используйте AnimationTimer в качестве своего (игрового) цикла. Увеличивайте x и y на dx и dy в каждом кадре анимации, пока прямоугольник не достигнет места назначения.

person Roland    schedule 24.03.2015