mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-04-19 17:16:08 +08:00
202 lines
4.2 KiB
Markdown
202 lines
4.2 KiB
Markdown
# CameraAnimation API 文档
|
||
|
||
本文档由 `DeepSeek R1` 模型生成并微调。
|
||
|
||
---
|
||
|
||
```mermaid
|
||
graph LR
|
||
CameraAnimation --> EventEmitter
|
||
|
||
click EventEmitter "https://nodejs.org/api/events.html#class-eventemitter"
|
||
```
|
||
|
||
_继承自 `EventEmitter<CameraAnimationEvent>`,支持事件监听。_
|
||
|
||
---
|
||
|
||
## 属性说明
|
||
|
||
| 属性名 | 类型 | 描述 |
|
||
| -------- | -------- | ---------------- |
|
||
| `camera` | `Camera` | 关联的摄像机实例 |
|
||
|
||
---
|
||
|
||
## 构造方法
|
||
|
||
### `constructor`
|
||
|
||
```typescript
|
||
function constructor(camera: Camera): CameraAnimation;
|
||
```
|
||
|
||
创建摄像机动画管理器,需绑定到特定 `Camera` 实例。
|
||
**示例:**
|
||
|
||
```typescript
|
||
const camera = Camera.for(renderItem);
|
||
const animation = new CameraAnimation(camera);
|
||
```
|
||
|
||
---
|
||
|
||
## 方法说明
|
||
|
||
### `translate`
|
||
|
||
```typescript
|
||
function translate(
|
||
operation: ICameraTranslate,
|
||
x: number,
|
||
y: number,
|
||
time: number,
|
||
start: number,
|
||
timing: TimingFn
|
||
): void;
|
||
```
|
||
|
||
为平移操作添加动画。
|
||
**参数说明:**
|
||
|
||
- `x`, `y`: 目标偏移量(格子坐标,自动乘以 `32`,之后可能改动)
|
||
- `time`: 动画持续时间(毫秒)
|
||
- `start`: 动画开始时间(相对于总动画开始的延迟)
|
||
- `timing`: 缓动函数(输入时间完成度,输出动画完成度)
|
||
|
||
### `rotate`
|
||
|
||
```typescript
|
||
function rotate(
|
||
operation: ICameraRotate,
|
||
angle: number,
|
||
time: number,
|
||
start: number,
|
||
timing: TimingFn
|
||
): void;
|
||
```
|
||
|
||
为旋转操作添加动画。
|
||
**参数说明:**
|
||
|
||
- `angle`: 目标旋转弧度(如 `Math.PI` 表示 `180` 度)
|
||
- 其余参考[`rotate`](#rotate)
|
||
|
||
### `scale`
|
||
|
||
```typescript
|
||
function scale(
|
||
operation: ICameraScale,
|
||
scale: number,
|
||
time: number,
|
||
start: number,
|
||
timing: TimingFn
|
||
): void;
|
||
```
|
||
|
||
为缩放操作添加动画。
|
||
**参数说明:**
|
||
|
||
- `scale`: 目标缩放倍率(如 `1.5` 表示放大 `1.5` 倍)
|
||
- 其余参考[`rotate`](#rotate)
|
||
|
||
### `start`
|
||
|
||
```typescript
|
||
function start(): void;
|
||
```
|
||
|
||
启动所有已添加的动画,按时间顺序执行。
|
||
**注意:** 调用后动画将按 `start` 参数定义的顺序触发。
|
||
|
||
### `destroy`
|
||
|
||
```typescript
|
||
function destroy(): void;
|
||
```
|
||
|
||
销毁动画管理器并释放所有资源(停止未完成的动画)。
|
||
|
||
---
|
||
|
||
## 事件说明
|
||
|
||
| 事件名 | 参数 | 描述 |
|
||
| --------- | -------------------------------------------------------------------------------------------------------- | ---------------------------- |
|
||
| `animate` | `operation: CameraOperation` <br> `execution: CameraAnimationExecution` <br> `item: CameraAnimationData` | 当某个动画片段开始执行时触发 |
|
||
|
||
---
|
||
|
||
## 总使用示例
|
||
|
||
```typescript
|
||
import { hyper, trigo } from 'mutate-animate';
|
||
|
||
// 创建渲染元素和摄像机
|
||
const renderItem = new Sprite();
|
||
const camera = Camera.for(renderItem);
|
||
|
||
// 添加平移和旋转操作
|
||
const translateOp = camera.addTranslate();
|
||
const rotateOp = camera.addRotate();
|
||
|
||
// 创建动画管理器
|
||
const animation = new CameraAnimation(camera);
|
||
|
||
// 添加平移动画:1秒后开始,持续2秒,横向移动3格(3*32像素)
|
||
animation.translate(
|
||
translateOp,
|
||
3,
|
||
0, // x=3, y=0(自动乘32)
|
||
2000, // 动画时长2秒
|
||
1000, // 延迟1秒开始
|
||
hyper('sin', 'out') // 双曲正弦函数
|
||
);
|
||
|
||
// 添加旋转动画:立即开始,持续1.5秒,旋转180度
|
||
animation.rotate(
|
||
rotateOp,
|
||
Math.PI, // 目标角度(弧度)
|
||
1500, // 动画时长1.5秒
|
||
0, // 无延迟
|
||
trigo('sin', 'out') // 正弦函数
|
||
);
|
||
|
||
// 启动动画
|
||
animation.start();
|
||
|
||
// 监听动画事件
|
||
animation.on('animate', (operation, execution, item) => {
|
||
console.log('动画片段开始:', item.type);
|
||
});
|
||
|
||
// 销毁(动画结束后)
|
||
setTimeout(() => {
|
||
animation.destroy();
|
||
camera.destroy();
|
||
}, 5000);
|
||
```
|
||
|
||
---
|
||
|
||
## 接口说明
|
||
|
||
### `CameraAnimationExecution`
|
||
|
||
```typescript
|
||
interface {
|
||
data: CameraAnimationData[]; // 动画片段列表
|
||
animation: Animation; // 关联的动画实例
|
||
}
|
||
```
|
||
|
||
### `CameraAnimationData`
|
||
|
||
```typescript
|
||
type CameraAnimationData =
|
||
| TranslateAnimation
|
||
| TranslateAsAnimation
|
||
| RotateAnimation
|
||
| ScaleAnimation;
|
||
```
|