顺序并行转换
顺序转换
以下是演示 JavaFX 中顺序转换的程序。将此代码保存在名为 SequentialTransitionExample.java 的文件中。
import javafx.animation.PathTransition; import javafx.animation.ScaleTransition; import javafx.animation.SequentialTransition; 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.scene.shape.CubicCurveTo; import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; import javafx.stage.Stage; import javafx.util.Duration; public class SequentialTransitionExample extends Application { @Override public void start(Stage stage) { //绘制一个圆 Circle circle = new Circle(); //设置圆的位置 circle.setCenterX(150.0f); circle.setCenterY(135.0f); //设置圆的半径 circle.setRadius(100.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(5); //将自动反转值设置为 false pathTransition.setAutoReverse(false); //播放动画 pathTransition.play(); //创建平移过渡 TranslateTransition TranslationTransition = new TranslateTransition(); //设置过渡的持续时间 pathTransition.setDuration(Duration.millis(1000)); //设置过渡的节点 pathTransition.setNode(circle); //设置沿 x 轴的过渡长度 TranslationTransition.setByX(300); //设置笔划的循环次数 translateTransition.setCycleCount(5); //将自动反转值设置为 false translateTransition.setAutoReverse(false); //将缩放过渡应用于圆圈 ScaleTransition scaleTransition = new ScaleTransition(); //设置过渡的持续时间 pathTransition.setDuration(Duration.millis(1000)); //设置过渡的节点 pathTransition.setNode(circle); //设置缩放的尺寸 scaleTransition.setByY(1.5); scaleTransition.setByX(1.5); //设置平移的循环次数 scaleTransition.setCycleCount(5); //将自动反转值设置为 false scaleTransition.setAutoReverse(false); //将顺序平移应用于圆圈 SequentialTransition SequenceTransition = new SequentialTransition(circle, pathTransition, TranslationTransition, scaleTransition ); //播放动画 SequenceTransition.play(); //创建一个 Group 对象 Group root = new Group(circle); //创建一个场景对象 Scene scene = new Scene(root, 600, 300); //为舞台(Stage)设置标题 stage.setTitle("顺序转换示例"); //将场景添加到舞台(Stage) stage.setScene(scene); //显示舞台(Stage)的内容 stage.show(); } public static void main(String args[]){ launch(args); } }
使用以下命令从命令提示符编译并执行保存的 java 文件。
javac SequentialTransitionExample.java java SequentialTransitionExample
执行时,上述程序将生成一个 JavaFX 窗口,如下所示。
并行转换
以下是演示 JavaFX 中并行转换的程序。将此代码保存在名为 parallelTransitionExample.java 的文件中。
import javafx.animation.ParallelTransition; import javafx.animation.PathTransition; import javafx.animation.ScaleTransition; 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.CubicCurveTo; import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; import javafx.util.Duration; public class parallelTransitionExample extends Application { @Override public void start(Stage stage) { //绘制矩形 Rectangle rectangle = new Rectangle(); //设置矩形的位置 rectangle.setX(75.0f); rectangle.setY(75.0f); //设置矩形的宽度 rectangle.setWidth(100.0f); //设置矩形的高度 rectangle.setHeight(100.0f); //设置矩形的颜色 rectangle.setFill(Color.BLUEVIOLET); //实例化路径类 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(rectangle); //设置过渡的路径 pathTransition.setPath(path); //设置路径的方向 pathTransition.setOrientation( PathTransition.OrientationType.ORTHOGONAL_TO_TAN GENT); //设置过渡的循环次数 pathTransition.setCycleCount(5); //将自动反转值设置为 false pathTransition.setAutoReverse(false); //播放动画 pathTransition.play(); //创建平移过渡 TranslateTransition TranslationTransition = new TranslateTransition(); //设置过渡的持续时间 TranslationTransition.setDuration(Duration.millis(1000)); //设置过渡的节点 TranslationTransition.setNode(rectangle); //设置过渡的轴和长度 TranslationTransition.setByX(300); //设置过渡的循环次数 translateTransition.setCycleCount(5); //将自动反转值设置为 false translateTransition.setAutoReverse(false); //创建缩放过渡 ScaleTransition scaleTransition = new ScaleTransition(); //设置过渡的持续时间 translateTransition.setDuration(Duration.millis(1000)); //设置过渡的节点 translateTransition.setNode(rectangle); //设置缩放的尺寸 scaleTransition.setByY(1.5); scaleTransition.setByX(1.5); //设置平移的循环次数 scaleTransition.setCycleCount(5); //将自动反转值设置为 true scaleTransition.setAutoReverse(false); //将平行平移应用于圆形 ParallelTransition parallelTransition = new ParallelTransition( rectangle, pathTransition, TranslationTransition, scaleTransition ); //播放动画 parallelTransition.play(); //创建一个 Group 对象 Group root = new Group(rectangle); //创建一个场景对象 Scene scene = new Scene(root, 600, 300); //为舞台(Stage)设置标题 stage.setTitle("平行平移示例"); //将场景添加到舞台(Stage) stage.setScene(scene); //显示舞台(Stage)内容 stage.show(); } public static void main(String args[]){ launch(args); } }
使用以下命令从命令提示符编译并执行保存的 java 文件。
javac parallelTransitionExample.java java parallelTransitionExample
执行时,上述程序将生成一个 JavaFX 窗口,如下所示。
暂停过渡
以下是演示 JavaFX 中暂停过渡的程序。将此代码保存在名为 PauseTransitionExample.java 的文件中。
import javafx.animation.PauseTransition; import javafx.animation.ScaleTransition; import javafx.animation.SequentialTransition; import javafx.animation.TranslateTransition; 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 PauseTransitionExample extends Application { @Override public void start(Stage stage) { //绘制一个圆圈 Circle circle = new Circle(); //设置圆圈的位置 circle.setCenterX(150.0f); circle.setCenterY(135.0f); //设置圆圈的半径 circle.setRadius(50.0f); //设置圆圈的颜色 circle.setFill(Color.BROWN); //设置圆圈的描边宽度 circle.setStrokeWidth(20); //创建暂停过渡 PauseTransition pauseTransition = new PauseTransition(); //设置过渡的持续时间 pauseTransition.setDuration(Duration.millis(1000)); //创建平移过渡 TranslateTransition TranslationTransition = new TranslateTransition(); //设置过渡的持续时间 translateTransition.setDuration(Duration.millis(1000)); //设置过渡的节点 translateTransition.setNode(circle); //设置沿 x 轴的过渡值 translateTransition.setByX(300); //设置笔触的循环计数 translateTransition.setCycleCount(5); //将自动反转值设置为 true translateTransition.setAutoReverse(false); //创建缩放过渡 ScaleTransition scaleTransition = new ScaleTransition(); //设置过渡的持续时间 scaleTransition.setDuration(Duration.millis(1000)); //设置过渡的节点 scaleTransition.setNode(circle); //设置缩放的尺寸 scaleTransition.setByY(1.5); scaleTransition.setByX(1.5); //设置平移的循环计数 scaleTransition.setCycleCount(5); //将自动反转值设置为 true scaleTransition.setAutoReverse(false); //将顺序过渡应用于圆圈 SequentialTransition SequenceTransition = new SequentialTransition( circle, TranslationTransition, PauseTransition, scaleTransition ); //播放动画 SequenceTransition.play(); //创建 Group 对象 Group root = new Group(circle); //创建 Scene 对象 Scene scene = new Scene(root, 600, 300); //设置 Stage 的标题 stage.setTitle("暂停过渡示例"); //将场景添加到舞台(Stage) stage.setScene(scene); //显示舞台(Stage)的内容 stage.show(); } public static void main(String args[]){ launch(args); } }
使用以下命令从命令提示符编译并执行保存的 java 文件。
javac PauseTransitionExample.java java PauseTransitionExample
执行时,上述程序将生成一个 JavaFX 窗口,如下所示。