顺序并行转换

顺序转换

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

Sequential Transition

并行转换

以下是演示 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);
    r​​ectangle.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