JavaFX9游戏开发:动画与脉冲系统详解
立即解锁
发布时间: 2025-08-19 02:13:36 阅读量: 3 订阅数: 11 


Java 9游戏开发:利用JavaFX API
### JavaFX 9 游戏开发:动画与脉冲系统详解
#### 1. javafx.graphics 模块概述
javafx.graphics 模块包含 18 个顶级包,是除核心 javafx.base 模块包之外最常用的包。这些包遵循 javafx.packagename 的命名格式,部分包(如 scene 和 css)还有子包。该模块是创建 Java 9 游戏的三个关键模块之一,另外两个是 javafx.base 和 javafx.media。
以下是 javafx.graphics 模块顶级(非场景)包的主要功能和描述:
| 包名 | 功能 | 包内容描述 |
| --- | --- | --- |
| javafx.animation | 动画 | 类:AnimationTimer、Timeline、Transition、Interpolator、KeyFrame、KeyValue |
| javafx.application | 应用程序 | 提供 Application(init、start、stop 方法)、Preloader、Parameters、Platform |
| javafx.concurrent | 线程 | 提供线程类:Task、Service、ScheduledService、WorkerStateEvent |
| javafx.css | CSS | 提供与在 JavaFX 中实现级联样式表(CSS)相关的类 |
| javafx.css.converter | CSS | 提供与在 JavaFX 中实现 CSS 相关的类 |
| javafx.geometry | 3D 几何 | 提供 3D 几何 |
| javafx.print | 打印 | 提供打印功能 |
| javafx.scene | 场景控制 | 与场景创建、组织和控制相关的类(见表 7 - 1) |
| javafx.stage | 舞台创建 | 提供舞台创建功能 |
#### 2. JavaFX 动画类的使用
在 Java 9 游戏开发中,动画是重要的设计元素。javafx.animation 包包含多个类,如 Animation 超类、Timeline、AnimationTimer、Interpolator、KeyFrame 和 KeyValue 类,以及 Transition 超类和十个过渡子类。
##### 2.1 JavaFX Animation 类
Animation 类为 JavaFX 中的动画提供核心功能。它有两个重载的构造方法:Animation() 和 Animation(double targetFramerate),用于在内存中创建 Animation 对象,控制动画的播放特性和生命周期。
Animation 类的常用方法和属性如下:
- **播放控制方法**:
- `.play()`:开始播放动画。
- `.playFrom(cuePoint)` 或 `.playFrom(Duration time)`:从指定位置开始播放。
- `.playFromStart()`:从动画开头开始播放。
- `.pause()`:暂停动画播放。
- `.stop()`:停止动画播放。
- `.jumpTo(Duration time)` 和 `.jumpTo(cuePoint)`:跳转到动画中的预定义位置。
- **属性设置方法**:
- `rate` 属性:设置动画播放速度(帧率)。
- `cycleCount` 属性:指定动画循环次数,可设置为 INDEFINITE 实现无缝循环。
- `delay` 属性:指定动画开始前的延迟时间,循环动画中可设置循环间的延迟。
- `autoReverse` 属性:设置动画是否反向播放。
- **其他方法**:
- `.setRate()`:设置动画播放速率属性。
- `.setDelay()`:设置延迟属性。
- `.setCycleCount()` 和 `.setCycleDuration()`:控制循环特性。
- 相应的 `.get()` 方法:获取当前设置的值。
- `onFinished` 属性:动画播放完成时执行的操作。
此外,还有只读变量(属性),可随时查询动画的状态、当前时间、当前速率、循环持续时间和总持续时间。
##### 2.2 JavaFX Timeline 类
Timeline 类是 JavaFX Animation 超类的子类,其继承层次如下:
```mermaid
graph TD;
java.lang.Object --> javafx.animation.Animation;
javafx.animation.Animation --> javafx.a
```
0
0
复制全文
相关推荐










