使用時間軸動畫屬性

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 會回到零,即使它不是時間軸中的第一個值。