Вопрос вот в чем: Есть класс Controller и FXML. У кнопки "бросить кубик" есть event onMouseClicked выполняющий метод thrw() в Controller. Тот в свою очередь выполняет две анимации одинаковые но для разных Label таким образом:
package app;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
public class Controller {
@FXML
public Button thrwBtn;
@FXML
public Label cubeLabel;
@FXML
public Label bonusLabel;
public void thrw(MouseEvent mouseEvent) {
//две по очереди
AnimationHandler.throwCube(cubeLabel);
AnimationHandler.chargeBonus(bonusLabel);
}
}
AnimationHandler - класс со статическими методами в который я инкапсулировал всю анимацию игры, чтобы не загромождать Controller.
Вот код в AnimationHandler:
package app;
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.scene.control.Label;
import javafx.util.Duration;
public class AnimationHandler {
public static void throwCube(Label label) {
//мигание Label
int frame = 0;
Timeline timeline = new Timeline();
for (int i = 0; i < 160; i++) {
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(frame), new KeyValue(label.visibleProperty(), false)));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(frame+4), new KeyValue(label.visibleProperty(), true)));
frame = frame+5;
}
timeline.play();
}
public static void chargeBonus(Label label) {
//мигание Label (код точь-в-точь)
int frame = 0;
Timeline timeline = new Timeline();
for (int i = 0; i < 160; i++) {
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(frame), new KeyValue(label.visibleProperty(), false)));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(frame+4), new KeyValue(label.visibleProperty(), true)));
frame = frame+5;
}
timeline.play();
}
}
Две этих анимации выполняются ВМЕСТЕ, мигают два Label одновременно, хоть и написаны в разных методах. Как сделать, чтобы одна анимация ждала другую?
Решение нашел после уточняющего комментария Tsyclop.
Код анимаций тоже приложите.
Дело в анимации. Обе начинаются с 0 кадра. Поэтому и Label'ы мигают одновременно. А если иногда надо будет поставить, чтобы играла только вторая анимация, то это уже простым ifом можно добиться в коде контроллера. В общем спасибо всем за понимание!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеется Java сервер на HerokuПолучает запрос и должен вернуть некую строку, по сути Json