Не удается удалить дочерний элемент из узла после анимации - PullRequest
0 голосов
/ 10 июня 2019

Я просто работал с анимацией и понял проблему.Когда я попытался удалить дочерний элемент из родительского объекта после анимации, он не работал.

FadeTransition needRestartBoxFadeOut = new FadeTransition(Duration.millis(200));
needRestartBoxFadeOut.setFromValue(1);
needRestartBoxFadeOut.setToValue(0);
needRestartBoxFadeOut.setNode(needRestartBox);
needRestartBoxFadeOut.setAutoReverse(true);
needRestartBoxFadeOut.setCycleCount(1);
needRestartBoxFadeOut.setOnFinished(e -> removeNeedRestartBox());

(removeNeedRestartBox () просто удаляет needRestartBox из родительского элемента)

Как удалить дочерний элемент изродитель после анимации?

Спасибо за помощь и извините за мой плохой английский!


РЕДАКТИРОВАТЬ: У меня есть расширенный класс StackPane, который является родителем в этом случае.

//in constructor
Timeline needRestartBoxAnimation = new Timeline();
needRestartBoxAnimation.getKeyFrames().add(new KeyFrame(Duration.millis(200), new KeyValue(needRestartBoxHeight, 100.0)));

FadeTransition needRestartBoxFadeOut = new FadeTransition(Duration.millis(200));
needRestartBoxFadeOut.setFromValue(1);
needRestartBoxFadeOut.setToValue(0);
needRestartBoxFadeOut.setNode(needRestartBox);
needRestartBoxFadeOut.setAutoReverse(true);
needRestartBoxFadeOut.setCycleCount(1);
needRestartBoxFadeOut.setOnFinished(e -> removeNeedRestartBox());

//show method
private void showNeedRestart(){
   needRestartBox.setMaxHeight(0);
   getChildren().add(needRestartBox);
   needRestartBoxAnimation.play();
}

//dispose method
private void disposeNeedRestart(){
   needRestartBoxFadeOut.play();
}

//remove child method
public void removeNeedRestartBox() {
   getChildren().remove(needRestartBox);
}

Анимация временной шкалы не запускается, пока родительскийЭто содержит NeedRestartBox.Таким образом, основная проблема заключается в том, что FadeTransition не удаляет needRestartBox.

Я могу прислать вам весь класс, если хотите.

РЕДАКТИРОВАТЬ 2:
Теперь ребенок удаляется правильно, но что-то не работает.Если я не использую переход затухания, это работает хорошо.

//working dispose method:
private void disposeNeedRestart(){
   removeNeedRestartBox();
}

//not working dispose method:
private void disposeNeedRestart(){
   needRestartBoxFadeOut.play();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...