JavaFX PathTransition类

它允许节点在指定的持续时间内通过指定的路径进行动画处理。在 JavaFX 中,路径是通过实例化javafx.scene.shape.Path类来定义的。

沿着这条路径的平移是通过定期更新节点的 x 和 y 坐标来完成的。只有在方向设置为OrientationType.ORTHOGONAL_TO_TANGENT的情况下才能进行旋转。

在 JavaFX 中,类javafx.animation.PathTransition表示路径转换。我们需要实例化这个类以创建适当的路径转换。

1 PathTransition类的属性

属性 描述 setter方法
duration 此属性是类 Duration 的对象类型。这代表了过渡的生命周期。 setDuraton(Duration duration)
node 这是 Node.js 类的一个对象。这表示将应用转换的节点。 setNode(Node node)
orientation 这是PathTransition.OrientationType引用的对象类型属性。它表示节点沿路径的垂直方向。 setOrientation(PathTransition.OrientationType orientation-type)
path 这是 Shape 类的对象类型属性。它指定了动画路径的轮廓所经历的形状。 setPath(Shape shape)

2 PathTransition类的构造函数

该类包含下面给出的三个构造函数。

  1. public PathTransition() :使用默认参数创建路径转换的实例
  2. public PathTransition(Duration duration, Shape path) :创建具有指定持续时间和路径的路径过渡实例
  3. public PathTransition(Duration duration, Shape path, Node node) :创建具有指定持续时间、路径和节点的 PathTransition 实例。

3 PathTransition类的例子

在下面的示例中,我们创建了一个多边形并在其上应用了路径过渡,以模拟钟摆的路径。

package com.yiidian;

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.CubicCurveTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
import javafx.scene.shape.Polygon;
import javafx.stage.Stage;
import javafx.util.Duration;

public class Path_Transition extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        //Creating Polygon
        Polygon poly = new Polygon();
        poly.getPoints().addAll(new Double[] {320.0,270.0,270.0,220.0,270.0,270.0,320.0,120.0,370.0,270.0,370.0,220.0});

        //Setting Colour and Stroke properties for the polygon
        poly.setFill(Color.LIMEGREEN);
        poly.setStroke(Color.BLACK);

        //Setting up the path
        Path path = new Path();
        path.getElements().add (new MoveTo(150f, 70f));
        path.getElements().add (new CubicCurveTo(240f, 230f, 500f, 340f, 600, 50f));

        //Instantiating PathTransition class
        PathTransition pathTransition = new PathTransition();

        //Setting duration for the PathTransition
        pathTransition.setDuration(Duration.millis(1000));

        //Setting Node on which the path transition will be applied
        pathTransition.setNode(poly);

        //setting path for the path transition
        pathTransition.setPath(path);

        //setting orientation for the path transition
        pathTransition.setOrientation(PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT);

        //setting up the cycle count
        pathTransition.setCycleCount(10);

        //setting auto reverse to be true
        pathTransition.setAutoReverse(true);

        //Playing path transition   
        pathTransition.play();

        //Configuring group and scene
        Group root = new Group();
        root.getChildren().addAll(poly);
        Scene scene = new Scene(root,700,350,Color.WHEAT);
        primaryStage.setScene(scene);
        primaryStage.setTitle("一点教程网:Path Transition Example");
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
  
}  

输出结果为:

热门文章

优秀文章