📅  最后修改于: 2023-12-03 15:01:36.243000             🧑  作者: Mango
JavaFX 是一个用于构建富互联网应用程序的GUI工具包和多媒体框架。其中,JavaFX 动画是一种强大的工具,可以让开发人员为用户界面添加眼花缭乱的动画效果。
我们可以使用 JavaFX 的 Timeline
类创建基本动画。下面是一个示例:
import javafx.animation.*;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;
public class BasicAnimationExample extends Application {
@Override
public void start(Stage stage) {
Rectangle rectangle = new Rectangle(100, 60, Color.RED);
StackPane root = new StackPane(rectangle);
Scene scene = new Scene(root, 300, 250);
TranslateTransition translateTransition = new TranslateTransition(Duration.seconds(1), rectangle);
translateTransition.setFromX(-150);
translateTransition.setToX(150);
translateTransition.setCycleCount(Timeline.INDEFINITE);
translateTransition.setAutoReverse(true);
translateTransition.play();
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这个示例创建了一个展示动画的 Rectangle
对象,并将其添加到 StackPane
中。然后,我们创建了一个 TranslateTransition
对象,该对象将 Translate
属性应用于矩形的 X 坐标。此动画在 1 秒钟内从 -150 移动到 150,并反复进行。此外,因为我们设置了 setAutoReverse(true)
,所以矩形会在达到指定位置后返回到其起始位置。
我们还可以创建自定义的 JavaFX 动画。下面是一个示例:
import javafx.animation.Animation;
import javafx.animation.Transition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;
public class CustomAnimationExample extends Application {
@Override
public void start(Stage stage) {
Rectangle rectangle = new Rectangle(100, 60, Color.RED);
StackPane root = new StackPane(rectangle);
Scene scene = new Scene(root, 300, 250);
Transition transition = new Transition() {
{
setCycleDuration(Duration.seconds(3));
}
@Override
protected void interpolate(double frac) {
double yOffset = frac * 100;
rectangle.setTranslateY(yOffset);
}
};
transition.setCycleCount(Animation.INDEFINITE);
transition.setAutoReverse(true);
transition.play();
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这个示例创建了一个自定义的动画,它将矩形的 Translate
属性应用于 Y 坐标。矩形的 Y 偏移量是通过动画中的小数 frac
计算的。此动画在 3 秒钟内完成一次,反复进行,并设置了反向播放的选项。
JavaFX 动画是一种强大的工具,可以用于创建各种令人印象深刻的动画效果。使用 Timeline
或自定义 Transition
对象可以实现复杂的动画。