JavaFX - 路径转换

示例 1

以下是演示 JavaFX 中的路径转换的程序。将此代码保存在名为 PathTransitionExample.java 的文件中。

import javafx.animation.PathTransition; 
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.scene.shape.CubicCurveTo; 
import javafx.scene.shape.MoveTo; 
import javafx.scene.shape.Path; 

import javafx.stage.Stage; 
import javafx.util.Duration;  
    
public class PathTransitionExample extends Application { 
   @Override 
   public void start(Stage stage) {
        //绘制一个圆
        Circle circle = new Circle();
        
        //设置圆的位置
        circle.setCenterX(300.0f);
        circle.setCenterY(135.0f);
        
        //设置圆的半径
        circle.setRadius(25.0f);
        
        //设置圆的颜色
        circle.setFill(Color.BROWN);
        
        //设置圆的描边宽度
        circle.setStrokeWidth(20);
        
        //实例化路径类
        Path path = new Path();
        
        //创建 MoveTo 路径元素
        MoveTo moveTo = new MoveTo(100, 150);
        
        //创建三次曲线路径元素
        CubicCurveTo cubicCurveTo = new CubicCurveTo(400, 40, 175, 250, 500, 150);
        
        //将路径元素添加到 Path 类的 Observable 列表中
        path.getElements().add(moveTo);
        path.getElements().add(cubicCurveTo);
        
        //创建路径过渡
        PathTransition pathTransition = new PathTransition();
        
        //设置路径过渡的持续时间
        pathTransition.setDuration(Duration.millis(1000));
        
        //设置过渡的节点
        pathTransition.setNode(circle);
        
        //设置路径
        pathTransition.setPath(path);
        
        //设置路径的方向
        pathTransition.setOrientation(PathTransition.OrientationType.
        ORTHOGONAL_TO_TAN GENT);
        
        //设置过渡的循环次数
        pathTransition.setCycleCount(50);
        
        //将自动反转值设置为 false
        pathTransition.setAutoReverse(false);
        
        //播放动画
        pathTransition.play();
        
        //创建一个 Group 对象
        Group root = new Group(circle);
        
        //创建一个 scene 对象
        Scene scene = new Scene(root, 600, 300);
        
        //设置 Stage 的标题
        stage.setTitle("Path transition example");
        
        //将 scene 添加到 stage
        stage.setScene(scene);
        
        //显示 stage 的内容
        stage.show();
   }
   public static void main(String args[]){ 
      launch(args); 
   } 
}

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

javac PathTransitionExample.java 
java PathTransitionExample 

执行时,上述程序将生成一个 JavaFX 窗口,如下所示。

路径转换

示例 2

以下是沿复杂路径变换圆的示例。将此代码保存在名为 PathTransitionExample2.java 的文件中。

import javafx.animation.PathTransition; 
import javafx.application.Application; 

import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.paint.Color; 

import javafx.scene.shape.Circle; 
import javafx.scene.shape.LineTo; 
import javafx.scene.shape.MoveTo; 
import javafx.scene.shape.Path;  

import javafx.stage.Stage; 
import javafx.util.Duration; 
         
public class PathTransitionExample2 extends Application {   
   @Override 
   public void start(Stage stage) {
        //绘制一个圆
        Circle circle = new Circle();
        
        //设置圆的位置
        circle.setCenterX(300.0f);
        circle.setCenterY(135.0f);
        
        //设置圆的半径
        circle.setRadius(25.0f);
        
        //设置圆的颜色
        circle.setFill(Color.BROWN);
        
        //设置圆的描边宽度
        circle.setStrokeWidth(20);
        
        //创建路径
        Path path = new Path();
        
        //移动到起点
        MoveTo moveTo = new MoveTo(108, 71);
        
        //创建第一条线
        LineTo line1 = new LineTo(321, 161);
        
        //创建第二行
        LineTo line2 = new LineTo(126,232);
        
        //创建第三行
        LineTo line3 = new LineTo(232,52);
        
        //创建第四行
        LineTo line4 = new LineTo(269, 250);
        
        //创建第五行
        LineTo line5 = new LineTo(108, 71);
        
        //将所有元素添加到路径
        path.getElements().add(moveTo);
        path.getElements().addAll(line1, line2, line3, line4, line5);
        
        //创建路径过渡
        PathTransition pathTransition = new PathTransition();
        
        //设置过渡持续时间
        pathTransition.setDuration(Duration.millis(1000));
        
        //设置过渡节点
        pathTransition.setNode(circle);
        
        //设置过渡路径
        pathTransition.setPath(path);
        
        //设置路径方向
        pathTransition.setOrientation(
        PathTransition.OrientationType.ORTHOGONAL_TO_TAN GENT);
        
        //设置过渡循环次数
        pathTransition.setCycleCount(50);
        
        //将自动反转值设置为 true
        pathTransition.setAutoReverse(false);
        
        //播放动画
        pathTransition.play();
        
        //创建 Group 对象
        Group root = new Group(circle);
        
        //创建 Scene 对象
        Scene scene = new Scene(root, 600, 300);
        
        //设置 Stage 标题
        stage.setTitle("Path transition example");
        
        //将场景添加到舞台(Stage)
        stage.setScene(scene);
        
        //显示舞台(Stage)内容
        stage.show();
   }
   public static void main(String args[]){ 
      launch(args); 
   } 
} 

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

javac PathTransitionExample2.java 
java PathTransitionExample2 

执行时,上述程序将生成一个 JavaFX 窗口,如下所示。

路径转换示例

javafx_animations.html