JavaFX 动画效果
引言
JavaFX 是一个用于构建富客户端应用程序的框架,提供了丰富的图形库和用户界面控件。其中,动画效果是 JavaFX 的一个重要特性,可以使应用程序更具吸引力和交互性。本文将介绍 JavaFX 中的动画效果,并提供一些代码示例,帮助读者理解和使用动画效果。
JavaFX 动画基础
JavaFX 提供了几种常见的动画类型,包括平移(Translate)、缩放(Scale)、旋转(Rotate)和渐变(Fade)等。这些动画可以通过 JavaFX 的动画类来创建,并通过设置属性来控制动画的行为。
平移动画
平移动画可以用于将一个节点从一个位置平滑地移动到另一个位置。以下是一个简单的平移动画示例:
import javafx.animation.TranslateTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;
public class TranslateAnimationExample extends Application {
@Override
public void start(Stage primaryStage) {
Rectangle rectangle = new Rectangle(100, 100);
rectangle.setStyle("-fx-fill: blue;");
TranslateTransition translateTransition = new TranslateTransition(Duration.seconds(2), rectangle);
translateTransition.setFromX(0);
translateTransition.setToX(200);
translateTransition.setCycleCount(TranslateTransition.INDEFINITE);
translateTransition.setAutoReverse(true);
translateTransition.play();
StackPane root = new StackPane(rectangle);
Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
在上面的代码中,我们创建了一个 Rectangle
对象,并设置其初始位置为 (0, 0)
。然后,我们创建了一个 TranslateTransition
对象,并设置其持续时间为 2 秒。接下来,我们通过调用 setFromX()
和 setToX()
方法设置平移的起始位置和目标位置。最后,我们通过调用 play()
方法启动动画。
缩放动画
缩放动画可以用于将一个节点平滑地放大或缩小。以下是一个简单的缩放动画示例:
import javafx.animation.ScaleTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;
public class ScaleAnimationExample extends Application {
@Override
public void start(Stage primaryStage) {
Rectangle rectangle = new Rectangle(100, 100);
rectangle.setStyle("-fx-fill: blue;");
ScaleTransition scaleTransition = new ScaleTransition(Duration.seconds(2), rectangle);
scaleTransition.setFromX(1);
scaleTransition.setFromY(1);
scaleTransition.setToX(2);
scaleTransition.setToY(2);
scaleTransition.setCycleCount(ScaleTransition.INDEFINITE);
scaleTransition.setAutoReverse(true);
scaleTransition.play();
StackPane root = new StackPane(rectangle);
Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
在上面的代码中,我们创建了一个 Rectangle
对象,并设置其初始大小为 (100, 100)
。然后,我们创建了一个 ScaleTransition
对象,并设置其持续时间为 2 秒。接下来,我们通过调用 setFromX()
、setFromY()
、setToX()
和 setToY()
方法设置缩放的起始大小和目标大小。最后,我们通过调用 play()
方法启动动画。
旋转动画
旋转动画可以用于将一个节点平滑地旋转一定角度。以下是一个简单的旋转动画示例:
import javafx.animation.RotateTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;
public class RotateAnimationExample extends Application {
@Override
public void start(Stage primaryStage) {
Rectangle rectangle = new Rectangle(100, 100);
rectangle.setStyle("-fx-fill: blue;");
RotateTransition rotateTransition = new RotateTransition(Duration.seconds(2), rectangle);
rotateTransition.setByAngle(360);
rotateTransition.setCycleCount(RotateTransition.INDEFINITE