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