так быстро, я делаю программу, которая демонстрирует методы, используемые для графического рисования компьютера. Мне нужно создать временную шкалу или историю таких действий, как (placeVertex (x, y), moveVertex (newX, newY) и т. Д.) И итерации (вперед и назад, автоматически или вручную)JavaFX Transition анимация ждет
Я уже достиг этого, используя команду но некоторые из этих команд используют переходы. Первой идеей было использование блокировки интерфейса Condition, ожидания и сигнала в setOnFinished
между каждой командой, но это привело к зависанию gui.
Я попробовал SequentialTransition, но это бесполезно для моей проблемы - нельзя динамически изменять свойства между переходами.
Есть ли возможность как-то сообщить поколению, что один переход закончился, а затем может работать без зависания графического интерфейса и рисования?
Спасибо!
редактировать: Я буду стараться, чтобы упростить все это Вот мой Командный интерфейс и один из этих команд:
public interface Command {
public void execute();
}
public class MoveVertex implements Command {
public MoveVertex(Data d, Vertex v, double changedX, double changedY){..};
@Override
public void execute() {
Path path = new Path();
path.getElements().add(new MoveTo(v.getCenterX(), v.getCenterY()));
path.getElements().add(new LineTo(changedX, changedY));
PathTransition pathTransition = new PathTransition();
pathTransition.setDuration(Duration.millis(velocity));
pathTransition.setPath(path);
pathTransition.setNode(v.getVertex());
pathTransition.play(); }
}
Эти команды хранятся в моем классе истории, которая в основном
private List<Command> history;
И я просматриваю список и выполняю команды
public boolean executeNext() {
if (history.size() != position) {
history.get(position).execute();
position++;
return true;
}
return false;
}
И я пытаюсь достичь состояния, когда следующая команда запускается только в том случае, если предыдущий закончен. Попытка поставить ожидания/сигнал между ними без успеха.
ли не [onFinsihedProperty с переходной в) (] (http://docs.oracle.com/javafx/2/api/javafx/animation/Animation.html#onFinishedProperty%28%29) Работа для вас? – ItachiUchiha
@ItachiUchiha не очень, например, у меня есть один круг, два перехода пути, первый из них перемещает круг от 0 до 100 100, второй - один и тот же круг где-то в другом месте, я хочу обновить местоположение в зависимости от первого хода, но даже если i поместите новые места 'MoveTo' в' onFinishedProperty() 'его не работает, возможно потому, что переход уже создан из-за этого? – Sappo
Это странно, что onFinished не работает для вас, можете ли вы включить [mcve] (http://stackoverflow.com/help/mcve) в свой вопрос, который реплицирует проблему? Использование обработчиков событий/собеседников свойств, которые обращаются к соответствующим событиям, является правильным решением, используя то, что приостанавливает или сглажает поток приложений JavaFX, является неправильным решением. – jewelsea