JavaFX之PathTransition类的使用-简单实例(一)PathTransitionDemo.java

本文介绍了JavaFX中的PathTransition动画,详细讲解了其父类Animation的关键属性和方法,如autoReverse、cycleCount和rate等。接着阐述了PathTransition的Duration属性和OrientationType,并提供了一个教材实例进行解析,强调了代码的‘假绑定’实现方式,帮助读者更好地理解和应用PathTransition。

一、要来讨论PathTransition,那就需要先来看看它的父类(Animation)都有哪些属性值和方法

** javafx.animation.Animation** -UML
-autoReverse: BooleanProperty
-cycleCount: IntegerProperty
-rate: DoubleProperty
-status: ReadOnlyObjectProperty<Animation.Status>
+pause(): void
+play(): void
+stop(): void
说明:

autoReverse是一个Boolean属性,表示下一周期动画是否要倒转方向。cycleCount表示该动画循环次数,一般可以用Timeline.INDEFINTE 来表示无限循环。rate定义了动画的速度,可以用。一个负的rate表示动画的相反方向。status是只读属性,表明了动画的状态(Animation.Status.PAUSE、Animation.Status.RUNNING和Animation.Status.STOPPED)。方法pause()、play()、stop()表示暂停、播放和终止动画。

二、PathTransition的属性值和方法

** javafx.animation.PathTransition** -UML
-duration: ObjectProperty
-node: objectProperty
-orientation: ObjectProperty<PathTransition.OrientationType>
-path: ObjectType
+PathTransition()
+PathTransition(duration: Duration, path: Shape)
+PathTransition(duration: Duration, path: Shape, node: Node)
说明:

Duration类定义了持续时间。它是一个不可更改的类。这个类定义了常量INDEFINTE、ONE、UNKNOWN和ZERO来代表一个无限循环、1毫秒、未知以及0的持续时间。可以使用new Duration(double millis)来创建一个Duration实例,可以使用add、subtract、multiply和divide方法来执行算术操作,还可以使用toHours()、toMinutes()、toSeconds()和toMillis()来返回持续时间值中的小数数、分钟数、秒钟数以及毫秒数。还可以使用compareTo来比较两个持续时间。
常量NONE和ORTHOGONAL_TO_TANGET在PathTransition.OrientationType中定义。后者确定结点沿着几何路径移动的过程中是否和路径的切线保持垂直。

三、口述总是难以理解,下面给出一个教材上的实例供大家分析

下面展示实例PathTransitionDemo.java

 1 import javafx.scene.Scene;
 2 import javafx.application.Application;
 3 import javafx.stage.Stage;
 4 import javafx.scene.layout.*;
 5 import javafx.scene.paint.*;
 6 import javafx.scene.shape.*;
 7 
使用 `javac` 编译包含 JavaFX 控件和 FXML 的 Java 源文件时,需要正确配置模块路径(`--module-path`)并声明所需的模块(`--add-modules`),以确保 Java 编译器能够识别 JavaFX 相关的和资源。 ### 编译命令结构 使用 `javac` 编译 JavaFX 项目的命令格式如下: ```bash javac --module-path <模块路径> --add-modules <所需模块> -d <输出目录> <源文件> ``` 其中: - `--module-path`:指定模块路径,通常包括 JavaFX SDK 的 `lib` 文件夹路径。 - `--add-modules`:指定需要添加的模块,可以是多个模块,使用逗号分隔。 - `-d`:指定编译后的文件输出目录。 - `<源文件>`:要编译的 Java 源文件路径。 ### 示例编译命令 假设项目结构如下: - JavaFX SDK 路径为:`C:\mrathena\develop\javafx-sdk-21.0.1\lib` - 源文件路径为:`src/com/coder/demo/HelloApplication.java` - 输出目录为:`build` 编译命令如下: ```bash javac --module-path C:\mrathena\develop\javafx-sdk-21.0.1\lib --add-modules javafx.controls,javafx.fxml -d build src/com/coder/demo/HelloApplication.java ``` 该命令会编译 `HelloApplication.java` 文件,并将生成的 `.class` 文件放入 `build` 目录中。同时,它会加载 `javafx.controls` 和 `javafx.fxml` 模块,以支持 JavaFX 控件和 FXML 的使用[^2]。 ### 使用通配符添加所有 JavaFX 模块 如果希望次性添加所有 JavaFX 模块,可以使用通配符 `javafx.*`: ```bash javac --module-path C:\mrathena\develop\javafx-sdk-21.0.1\lib --add-modules javafx.* -d build src/com/coder/demo/HelloApplication.java ``` 这将自动包含所有 JavaFX 模块,例如 `javafx.base`、`javafx.graphics`、`javafx.controls` 等。 ### 编译包含 FXML 的项目 如果项目中使用了 FXML 文件,则必须确保 `javafx.fxml` 模块被包含在 `--add-modules` 参数中。否则,编译器将无法识别 FXML 相关的和注解处理。 例如,假设 `HelloApplication.java` 中使用了 FXML 文件: ```java FXMLLoader loader = new FXMLLoader(getClass().getResource("hello.fxml")); ``` 此时,必须添加 `javafx.fxml` 模块以确保正确编译。 ### 模块路径的注意事项 - 模块路径应指向 JavaFX SDK 的 `lib` 文件夹,而不是 `bin` 或其他目录。 - 如果使用的是模块化项目,并且有自定义模块(如 `com.coder.demo`),则需要将编译后的模块路径(如 `mods` 文件夹)也包含在 `--module-path` 中,以便引用其他模块[^2]。 示例: ```bash javac --module-path C:\mrathena\develop\javafx-sdk-21.0.1\lib;mods --add-modules javafx.controls,javafx.fxml -d build src/com/coder/demo/HelloApplication.java ``` 该命令将 `mods` 文件夹添加到模块路径中,允许编译器引用自定义模块。 ### 总结 在编译包含 JavaFX 控件和 FXML 的 Java 源文件时,需正确设置模块路径和所需模块。通过 `--module-path` 指定 JavaFX SDK 路径,并通过 `--add-modules` 添加必要的 JavaFX 模块(如 `javafx.controls` 和 `javafx.fxml`)。如果项目中使用了自定义模块,则需将其路径添加到模块路径中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值