Javafx 简明教程

JavaFX - Translate Transition

一般来说,Translate 动效只将应用程序中的某个对象从一个位置移至另一个位置。这通常是通过指定新坐标点或此对象需要移动到的距离来完成的。

JavaFX 允许您在各个节点上应用 translate 动效。例如,在少数几个应用中,在重要的日子里,会看到一些动画角色在应用程序屏幕上移动;例如圣诞老人在圣诞节那天。这可以通过平移动效来执行。

Translate Transition in JavaFX

JavaFX 中的 Translate 动效使用 javafx.animation 包的 TranslateTransition 类在指定的时间段内移动 JavaFX 节点。此类包含多个属性,如下所列,以提高所述动画的质量。

  1. byX − 指定该 TranslateTransition 的从起始位置增量的 X 坐标值。

  2. byY − 指定该 TranslateTransition 的从起始位置增量的 Y 坐标值。

  3. byZ − 指定该 TranslateTransition 的从起始位置增量的 Z 坐标值。

  4. duration − 该 TranslateTransition 的时间段

  5. fromX − 指定该 TranslateTransition 的起始 X 坐标值。

  6. fromY − 指定该 TranslateTransition 的起始 Y 坐标值。

  7. fromZ − 指定该 TranslateTransition 的起始 Z 坐标值。

  8. node − 该 TranslateTransition 的目标节点。

  9. toX − 指定该 TranslateTransition 的停止 X 坐标值。

  10. toY − 该 TranslateTransition 的停止 Y 坐标值。

  11. toZ − 该 TranslateTransition 的停止 Z 坐标值。

Example

以下是演示 JavaFX 中转换过渡的程序。将此代码保存在名称为 TranslateTransitionExample.java 的文件中。

import javafx.animation.TranslateTransition;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;

public class TranslateTransitionExample extends Application {
   @Override
   public void start(Stage stage) {
      //Drawing a Circle
      Circle circle = new Circle();

      //Setting the position of the circle
      circle.setCenterX(150.0f);
      circle.setCenterY(135.0f);

      //Setting the radius of the circle
      circle.setRadius(100.0f);

      //Setting the color of the circle
      circle.setFill(Color.BROWN);

      //Setting the stroke width of the circle
      circle.setStrokeWidth(20);

      //Creating Translate Transition
      TranslateTransition translateTransition = new TranslateTransition();

      //Setting the duration of the transition
      translateTransition.setDuration(Duration.millis(1000));

      //Setting the node for the transition
      translateTransition.setNode(circle);

      //Setting the value of the transition along the x axis.
      translateTransition.setByX(300);

      //Setting the cycle count for the transition
      translateTransition.setCycleCount(50);

      //Setting auto reverse value to false
      translateTransition.setAutoReverse(false);

      //Playing the animation
      translateTransition.play();

      //Creating a Group object
      Group root = new Group(circle);

      //Creating a scene object
      Scene scene = new Scene(root, 600, 300);

      //Setting title to the Stage
      stage.setTitle("Translate transition example");

      //Adding scene to the stage
      stage.setScene(scene);

      //Displaying the contents of the stage
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

使用以下命令,从命令提示符编译并执行已保存的 java 文件。

javac --module-path %PATH_TO_FX% --add-modules javafx.controls TranslateTransitionExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls TranslateTransitionExample

执行后,上述程序会生成如下所示的 JavaFX 窗口。

translate transition