使用时间轴动画属性

Button button = new Button("I'm here...");

Timeline t = new Timeline(
        new KeyFrame(Duration.seconds(0), new KeyValue(button.translateXProperty(), 0)),
        new KeyFrame(Duration.seconds(2), new KeyValue(button.translateXProperty(), 80))
);
t.setAutoReverse(true);
t.setCycleCount(Timeline.INDEFINITE);
t.play();

在 JavaFX 中使用动画的最基本和最灵活的方法是使用 Timeline 类。时间轴使用 KeyFrames 作为动画中的已知点。在这种情况下,它知道在开始时(0 secondstranslateXProperty 需要为零,并且在结束时(2 seconds)知道该属性需要为 80。你还可以执行其他操作,例如将动画设置为反转,以及应该运行多少次。

时间轴可以同时为多个属性设置动画:

Timeline t = new Timeline(
        new KeyFrame(Duration.seconds(0), new KeyValue(button.translateXProperty(), 0)),
        new KeyFrame(Duration.seconds(1), new KeyValue(button.translateYProperty(), 10)),
        new KeyFrame(Duration.seconds(2), new KeyValue(button.translateXProperty(), 80)),
        new KeyFrame(Duration.seconds(3), new KeyValue(button.translateYProperty(), 90))
);                                                                //   ^ notice X vs Y

这个动画将把 Y 属性从 0(属性的起始值)带到 10 一秒钟,并在 90 以 3 秒结束。请注意,当动画开始时,Y 会回到零,即使它不是时间轴中的第一个值。