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 窗口,如下所示。