动画后无法从节点移除子项

时间:2019-06-10 10:42:40

标签: javafx

我刚使用动画,但发现一个问题。当我尝试在动画后从父级移除子级时,它不起作用。

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();
}

0 个答案:

没有答案