0

我正在寻找一种解决方案来添加带有淡入或翻转或任何动画的节点。谢谢你的帮助。

我在这里发现了同样的问题,但没有任何进一步的帮助:Animated component added-delete in a VBox

4

2 回答 2

3

正如jewelsea 已经提到的,您将使用Transitions。以下是如何为您的用例执行此操作的示例:

public static void addFadingIn(final Node node, final Group parent) {
    final FadeTransition transition = new FadeTransition(Duration.millis(250), node);
    transition.setFromValue(0);
    transition.setToValue(1);
    transition.setInterpolator(Interpolator.EASE_IN);
    parent.getChildren().add(node);
    transition.play();
  }

  public static void removeFadingOut(final Node node, final Group parent) {
    if (parent.getChildren().contains(node)) {
      final FadeTransition transition = new FadeTransition(Duration.millis(250), node);
      transition.setFromValue(node.getOpacity());
      transition.setToValue(0);
      transition.setInterpolator(Interpolator.EASE_BOTH);
      transition.setOnFinished(finishHim -> {
        parent.getChildren().remove(node);
      });
      transition.play();
    }
  }

或者使用 Java8 的更一般的实现:

 public static void addAnimating(final Node node, final Group parent,
      final Supplier<Animation> animationCreator) {
    parent.getChildren().add(node);
    animationCreator.get().play();
  }

  public static void removeAnimating(final Node node, final Group parent,
      final Supplier<Animation> animationCreator) {
    if (parent.getChildren().contains(node)) {
      final Animation animation = animationCreator.get();
      animation.setOnFinished(finishHim -> {
        parent.getChildren().remove(node);
      });
      animation.play();

    }
  }

您可以在https://gist.github.com/bugabinga/9576634上找到完整示例

于 2014-03-16T00:57:26.157 回答
1

您可以使用内置的转换或第三方库,例如FXExperience Canned Animations

有关将动画与标准布局窗格集成的示例,请参阅示例解决方案中使用的LayoutAnimator 代码:布局更改时的动画。LayoutAnimator 非常通用,并且可以与其他窗格一起使用,而不是它提供的 FlowPane 示例(使用 FlowPane 看起来更酷一些)。

于 2014-03-15T18:24:37.300 回答