动画组件

文档创建者:admin
浏览次数:5
最后更新:2025-07-09
  1. 我将查看动画组件的代码来生成详细的使用文档。
  2. Read file: 动画组件.js
  3. 让我基于代码内容为您编写一个详细的使用文档:

  4. # 动画组件使用文档

  5. ## 1. 组件概述

  6. 动画组件是一个用于播放序列帧动画的PIXI.js组件,支持多方向、多动作的动画播放控制。

  7. ### 主要特性
  8. - 支持2/4/5/8方向动画
  9. - 支持动作(action)、方向(dir)、状态切换
  10. - 支持播放速度调整和进度控制
  11. - 支持动态资源加载和内存管理
  12. - 支持动作级和全局的镜像配置
  13. - 支持自定义锚点设置
  14. - 支持偏移(x.txt)文件

  15. ## 2. 基础使用

  16. ### 创建实例
  17. ```javascript
  18. const anim = new 动画组件();
  19. ```

  20. ### 初始化
  21. ```javascript
  22. anim.初始化(x, y, {
  23.     路径: 'assets/role/{action}_{dir}_{frame}.png',
  24.     动作列表: {
  25.         stand: { 帧数: 6, fps: 6 },
  26.         run: { 帧数: 8, fps: 10 },
  27.         attack: { 帧数: 6, fps: 8 }
  28.     },
  29.     方向数: 8
  30. });
  31. ```

  32. ### 添加到场景
  33. ```javascript
  34. scene.addChild(anim.获取容器());
  35. ```

  36. ### 播放动画
  37. ```javascript
  38. anim.播放('stand', 2, true); // 动作名, 方向, 是否循环
  39. ```

  40. ## 3. 配置参数说明

  41. ### 全局配置
  42. ```javascript
  43. {
  44.     路径: 'assets/role/{action}_{dir}_{frame}.png', // 必填,支持{action} {dir} {frame}占位符
  45.     动作列表: Object,                               // 必填,动作配置对象
  46.     方向数: 2|4|5|8,                               // 可选,默认8
  47.     格式: 'png|jpg|webp',                          // 可选,默认'png'
  48.     起始帧: 0,                                     // 可选,默认0
  49.     锚点像素X: 256,                                // 可选,默认256
  50.     锚点像素Y: 256,                                // 可选,默认256
  51.     mirrorPairs: [[0,4], [1,3]]                    // 可选,全局镜像配置
  52. }
  53. ```

  54. ### 动作配置
  55. ```javascript
  56. {
  57.     帧数: number,           // 必填,动作总帧数
  58.     fps: number,            // 可选,默认10
  59.     方向: number,           // 可选,覆盖全局方向数
  60.     起始帧: number,         // 可选,覆盖全局起始帧
  61.     anchor: {x: number, y: number}, // 可选,动作级锚点
  62.     mirrorPairs: [[0,4], [1,3]]    // 可选,动作级镜像配置
  63. }
  64. ```

  65. ## 4. API参考

  66. ### 核心方法

  67. #### 初始化(x, y, 配置)
  68. - 参数:
  69.   - x: number - X坐标
  70.   - y: number - Y坐标
  71.   - 配置: Object - 动画配置对象
  72. - 返回:Promise<void>

  73. #### 播放(动作名, 方向, 循环)
  74. - 参数:
  75.   - 动作名: string - 要播放的动作名称
  76.   - 方向: number - 动画方向(0-7)
  77.   - 循环: boolean - 是否循环播放
  78. - 返回:void

  79. #### 暂停()
  80. 暂停当前动画播放

  81. #### 继续()
  82. 继续播放当前动画

  83. #### 停止()
  84. 停止动画播放并重置到第一帧

  85. ### 状态控制

  86. #### 设置速度(speed)
  87. - 参数:speed: number - 播放速度倍率,1为正常速度

  88. #### 设置进度(progress)
  89. - 参数:progress: number - 0到1之间的进度值

  90. #### 跳转到(frame)
  91. - 参数:frame: number - 目标帧序号

  92. ### 事件监听

  93. #### on(事件名, 回调函数)
  94. 添加事件监听器
  95. ```javascript
  96. anim.on('complete', () => console.log('动画播放完成'));
  97. ```

  98. #### off(事件名, 回调函数)
  99. 移除事件监听器

  100. #### once(事件名, 回调函数)
  101. 添加一次性事件监听器

  102. ### 支持的事件
  103. - 'complete' - 动画播放完成
  104. - 'loop' - 动画循环播放
  105. - 'frame' - 帧更新

  106. ## 5. 高级特性

  107. ### 镜像配置
  108. 支持两种级别的镜像配置:
  109. 1. 全局镜像:在初始化配置中设置
  110. 2. 动作级镜像:在具体动作配置中设置
  111. ```javascript
  112. {
  113.     mirrorPairs: [[0,4], [1,3]], // 方向0镜像到4,方向1镜像到3
  114. }
  115. ```

  116. ### 偏移支持
  117. - 通过x.txt文件配置每帧的偏移量
  118. - 格式:每行两个数字,分别表示x和y的偏移值
  119. ```
  120. 10 20
  121. 15 25
  122. 20 30
  123. ```

  124. ## 6. 注意事项

  125. 1. 资源命名规范
  126.    - 图片文件名必须符合路径模板格式
  127.    - 偏移文件(x.txt)需要放在相同目录下

  128. 2. 性能优化
  129.    - 合理设置fps避免性能问题
  130.    - 不使用时调用销毁()释放资源

  131. 3. 方向说明
  132.    - 8方向:0-7,从上开始顺时针
  133.    - 5方向:自动镜像补全
  134.    - 2/4方向:按需配置

  135. 4. 内存管理
  136.    - 组件会自动管理纹理资源
  137.    - 使用销毁()方法清理资源

  138. ## 7. 示例代码

  139. ```javascript
  140. // 创建并初始化动画组件
  141. const anim = new 动画组件();
  142. await anim.初始化(100, 200, {
  143.     路径: 'assets/character/{action}_{dir}_{frame}.png',
  144.     动作列表: {
  145.         idle: {
  146.             帧数: 8,
  147.             fps: 10,
  148.             anchor: {x: 256, y: 256},
  149.             mirrorPairs: [[1,3]]
  150.         },
  151.         walk: {
  152.             帧数: 8,
  153.             fps: 12,
  154.             方向: 4
  155.         }
  156.     },
  157.     方向数: 8,
  158.     锚点像素X: 256,
  159.     锚点像素Y: 256
  160. });

  161. // 添加到场景
  162. scene.addChild(anim.获取容器());

  163. // 播放动画
  164. anim.播放('idle', 0, true);

  165. // 监听事件
  166. anim.on('complete', () => {
  167.     console.log('动画播放完成');
  168. });

  169. // 控制播放
  170. anim.设置速度(1.5);
  171. anim.暂停();
  172. anim.继续();
  173. ```

  174. 这个文档涵盖了动画组件的所有主要功能和使用方法。如果您有任何具体的问题或需要更详细的说明,请随时询问。
复制代码


发表评论已发布 1

admin

发表于 昨天 18:29 | 显示全部楼层

让我检查代码中关于添加动作的API。
Ran tool
让我查看添加动作API的具体实现:
Read file: 动画组件.js
我为您补充添加动作API的文档说明:

## 4. API参考(补充)

### 动态添加动作

#### 添加动作(actionName, info)
在初始化后动态添加新的动作。

- 参数:
  - actionName: string - 动作名称
  - info: Object - 动作配置对象
    ```javascript
    {
        帧数: number,     // 必填,动作的总帧数
        fps: number,      // 可选,默认10,动画播放速率
        起始帧: number,   // 可选,默认使用全局配置的起始帧
        方向: number,     // 可选,覆盖全局方向数
        anchor: {         // 可选,动作级锚点设置
            x: number,    // 锚点X坐标(像素)
            y: number     // 锚点Y坐标(像素)
        },
        mirrorPairs: Array // 可选,动作级镜像配置,如 [[0,4], [1,3]]
    }
    ```
- 返回:Promise<void>
- 事件:
  - '动作已加载' - 当动作加载完成时触发
  - '加载错误' - 当加载过程中发生错误时触发

示例:
```javascript
// 添加新动作
await anim.添加动作('攻击', {
    帧数: 30,
    fps: 12,
    起始帧: 97,
    方向: 8,
    anchor: { x: 256, y: 256 },
    mirrorPairs: [[1,3], [2,6]]
});

// 监听加载完成
anim.on('动作已加载', (actionName) => {
    console.log(`动作 ${actionName} 加载完成`);
});
```

注意事项:
1. 动作名称不能重复,如果添加已存在的动作名会被忽略
2. 帧数参数是必须的,其他参数都是可选的
3. 动作级配置(方向数、锚点等)会覆盖全局配置
4. 资源路径使用初始化时配置的路径模板
5. 支持动态加载偏移文件(x.txt)
6. 添加动作是异步操作,建议等待加载完成后再使用

这个API允许您在初始化动画组件后,根据需要动态添加新的动作,非常适合按需加载资源的场景。每个新添加的动作都可以有自己的配置参数,包括帧数、播放速度、方向数、锚点位置等,使用方式与初始化时的动作配置完全一致。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则