我刚使用动画,但发现一个问题。当我尝试在动画后从父级移除子级时,它不起作用。
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();
}