Javafx 简明教程

JavaFX - Scale Transition

正如其名称所暗示,缩放是指增大或减小对象的尺寸。在计算机图形中,通过对对象(或图像)应用比例转换,可以在特定时间内增大或减小其尺寸。

此过渡也可以应用到各种 JavaFX 节点、2D 形状、3D 形状、文本以及应用程序上的任何其他元素。

Scale Transition in JavaFX

比例过渡在 JavaFX 中使用 ScaleTransition 类执行,该类属于 javafx.animation 包。此类包含各种属性,用于在 JavaFX 应用程序上显示此动画 −

  1. byX − 指定此 ScaleTransition 从开始到结束加大的 X 缩放值。

  2. byY − 指定此 ScaleTransition 从开始到结束加大的 Y 缩放值。

  3. byZ − 指定此 ScaleTransition 从开始到结束加大的 Z 缩放值。

  4. duration − 此 ScaleTransition 的持续时间

  5. fromX − 指定此 ScaleTransition 的开始 X 缩放值。

  6. fromY − 指定此 ScaleTransition 的开始 Y 缩放值。

  7. fromZ − 指定此 ScaleTransition 的开始 Z 缩放值。

  8. node − 此 ScaleTransition 的目标节点。

  9. toX − 指定此 ScaleTransition 的结束 X 缩放值。

  10. toY − 该 ScaleTransition 的停止 Y 缩放值。

  11. toZ − 该 ScaleTransition 的停止 Z 缩放值。

Example

以下是展示 JavaFX 中缩放过渡的程序。将此代码保存在名为 ScaleTransitionExample.java 的文件中。

import javafx.animation.ScaleTransition;
import javafx.application.Application;
import static javafx.application.Application.launch;
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 ScaleTransitionExample extends Application {
   @Override
   public void start(Stage stage) {
      //Drawing a Circle
      Circle circle = new Circle();

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

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

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

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

      //Creating scale Transition
      ScaleTransition scaleTransition = new ScaleTransition();

      //Setting the duration for the transition
      scaleTransition.setDuration(Duration.millis(1000));

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

      //Setting the dimensions for scaling
      scaleTransition.setByY(1.5);
      scaleTransition.setByX(1.5);

      //Setting the cycle count for the translation
      scaleTransition.setCycleCount(50);

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

      //Playing the animation
      scaleTransition.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("Scale 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 ScaleTransitionExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls ScaleTransitionExample

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

scale transition