使用时间轴动画属性
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
类。时间轴使用 KeyFrame
s 作为动画中的已知点。在这种情况下,它知道在开始时(0 seconds
)translateXProperty
需要为零,并且在结束时(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
会回到零,即使它不是时间轴中的第一个值。