2013-04-21 3 views
-1

Как можно дождаться перехода JavaFx в конец?Ждите перехода до конца

  • У меня есть алгоритм интерактивной сортировки.
  • Каждое число представлено прямоугольником.
  • При замене двух чисел прямоугольники должны быть заменены.

Проблема в том, что продолжительность анимации равна 1 с, и в это время весь массив уже отсортирован. Я уже сделал синхронизированный метод, который меняет местами прямоугольники. Но когда он делает «transition.play()»;

Я думаю, что переход работает в другом потоке, поэтому он должен ждать перехода до конца, прежде чем закончить этот метод.

Есть ли у вас идеи?

ответ

0

Это зависит от того, как вы сортируете массив. Если вы можете сортировать его шаг за шагом, выполните один шаг сортировки, а затем запустите одну анимацию. Поскольку вы знаете, что продолжительность составляет 1 секунду, просто спать в течение 1 секунды, а затем делать еще один шаг. Продолжайте, пока весь массив не будет отсортирован.

Если JavaFx позволяет получать обратные вызовы, когда анимация завершена, а затем прослушать обратный вызов, чтобы узнать, когда вы можете начать следующий шаг сортировки.

+0

Если я сплю 1s, пользовательский интерфейс замерзает. –

+0

Хорошо, так и JavaFx сообщит вам, когда анимация закончилась? (Я никогда не использовал его). Сон не будет работать, поэтому просто верните элемент управления в структуру пользовательского интерфейса, а затем ответьте на обратный вызов об анимации. Это определенно будет асинхронный дизайн с обратным вызовом. –

+1

JavaFX позвольте мне сделать что-то вроде этого: timeline2.setOnFinished (новый EventHandler () { @Override общественного аннулируются ручка (ActionEvent ActionEvent) { setRectangleFill (rectangle2, Color.BLACK); rectangle2.setX (rectangle1X); } }); –

Смежные вопросы