顺序并行转换
顺序转换
以下是演示 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 窗口,如下所示。

javafx_animations.html