@eva/plugin-transition 2.0.1-beta.27 → 2.0.1-beta.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -134,14 +134,72 @@ class Animation {
134
134
  }
135
135
  }
136
136
 
137
+ /**
138
+ * 过渡动画组件(基于 Tween.js)
139
+ *
140
+ * Transition 组件为游戏对象提供补间动画功能,可以平滑地改变组件属性。
141
+ * 它基于 Tween.js 实现,支持多种缓动函数、动画组、循环播放等高级功能。
142
+ *
143
+ * 主要功能:
144
+ * - 支持多个命名动画组
145
+ * - 可配置关键帧和缓动函数
146
+ * - 支持动画循环和迭代次数
147
+ * - 提供播放、暂停、停止控制
148
+ * - 支持动画完成和更新事件
149
+ *
150
+ * @example
151
+ * ```typescript
152
+ * const sprite = new GameObject('sprite');
153
+ * sprite.addComponent(new Transition({
154
+ * group: {
155
+ * fadeIn: [{
156
+ * name: 'alpha',
157
+ * component: sprite.getComponent('Sprite'),
158
+ * values: [
159
+ * { time: 0, value: 0, tween: 'ease-in' },
160
+ * { time: 1000, value: 1 }
161
+ * ]
162
+ * }],
163
+ * moveRight: [{
164
+ * name: 'position.x',
165
+ * component: sprite.getComponent('Transform'),
166
+ * values: [
167
+ * { time: 0, value: 0 },
168
+ * { time: 2000, value: 500, tween: 'ease-out-quad' }
169
+ * ]
170
+ * }]
171
+ * }
172
+ * }));
173
+ *
174
+ * // 播放动画
175
+ * const transition = sprite.getComponent('Transition');
176
+ * transition.play('fadeIn'); // 播放一次
177
+ * transition.play('moveRight', Infinity); // 无限循环
178
+ *
179
+ * // 监听动画事件
180
+ * transition.on('finish', (name) => {
181
+ * console.log('动画完成:', name);
182
+ * });
183
+ * ```
184
+ */
137
185
  class Transition extends eva_js.Component {
138
186
  constructor() {
139
187
  super(...arguments);
188
+ /** 动画实例映射表 */
140
189
  this.animations = {};
190
+ /** 动画组配置,key 为动画名称,value 为动画配置数组 */
141
191
  this.group = {};
192
+ /** 当前时间戳 */
142
193
  this.currentTime = 0;
194
+ /** 待播放的动画队列 */
143
195
  this.needPlay = [];
144
196
  }
197
+ /**
198
+ * 初始化组件
199
+ *
200
+ * @param params - 初始化参数
201
+ * @param params.group - 动画组配置对象
202
+ */
145
203
  init({ group } = { group: {} }) {
146
204
  this.group = group;
147
205
  this.tweenGroup = new tween_js.Group();
@@ -151,6 +209,19 @@ class Transition extends eva_js.Component {
151
209
  this.newAnimation(name);
152
210
  }
153
211
  }
212
+ /**
213
+ * 播放动画
214
+ *
215
+ * @param name - 动画名称,如果不传则播放第一个动画
216
+ * @param iteration - 循环次数,默认 1,传 Infinity 为无限循环
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * transition.play('fadeIn'); // 播放一次
221
+ * transition.play('rotate', 3); // 循环播放 3 次
222
+ * transition.play('bounce', Infinity); // 无限循环
223
+ * ```
224
+ */
154
225
  play(name, iteration) {
155
226
  if (!name) {
156
227
  name = Object.keys(this.group)[0];
@@ -162,6 +233,17 @@ class Transition extends eva_js.Component {
162
233
  this.needPlay.push({ name, iteration });
163
234
  }
164
235
  }
236
+ /**
237
+ * 停止动画
238
+ *
239
+ * @param name - 动画名称,如果不传则停止所有动画
240
+ *
241
+ * @example
242
+ * ```typescript
243
+ * transition.stop('fadeIn'); // 停止指定动画
244
+ * transition.stop(); // 停止所有动画
245
+ * ```
246
+ */
165
247
  stop(name) {
166
248
  var _a, _b;
167
249
  if (!name) {
@@ -215,14 +297,28 @@ class Transition extends eva_js.Component {
215
297
  this.animations[name] = animation;
216
298
  }
217
299
  }
300
+ /** 组件名称 */
218
301
  Transition.componentName = 'Transition';
219
302
 
303
+ /**
304
+ * 过渡动画系统
305
+ *
306
+ * TransitionSystem 是一个轻量级系统,主要用于注册 Transition 插件到游戏中。
307
+ * 实际的动画逻辑由 Transition 组件自身的 update 方法处理。
308
+ *
309
+ * @example
310
+ * ```typescript
311
+ * game.addSystem(new TransitionSystem());
312
+ * ```
313
+ */
220
314
  class TransitionSystem extends eva_js.System {
221
315
  constructor() {
222
316
  super(...arguments);
317
+ /** 系统实例名称 */
223
318
  this.name = 'transition';
224
319
  }
225
320
  }
321
+ /** 系统名称 */
226
322
  TransitionSystem.systemName = 'transition';
227
323
 
228
324
  exports.Transition = Transition;
@@ -12,18 +12,102 @@ declare interface AnimationStruct {
12
12
  }[];
13
13
  }
14
14
 
15
+ /**
16
+ * 过渡动画组件(基于 Tween.js)
17
+ *
18
+ * Transition 组件为游戏对象提供补间动画功能,可以平滑地改变组件属性。
19
+ * 它基于 Tween.js 实现,支持多种缓动函数、动画组、循环播放等高级功能。
20
+ *
21
+ * 主要功能:
22
+ * - 支持多个命名动画组
23
+ * - 可配置关键帧和缓动函数
24
+ * - 支持动画循环和迭代次数
25
+ * - 提供播放、暂停、停止控制
26
+ * - 支持动画完成和更新事件
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const sprite = new GameObject('sprite');
31
+ * sprite.addComponent(new Transition({
32
+ * group: {
33
+ * fadeIn: [{
34
+ * name: 'alpha',
35
+ * component: sprite.getComponent('Sprite'),
36
+ * values: [
37
+ * { time: 0, value: 0, tween: 'ease-in' },
38
+ * { time: 1000, value: 1 }
39
+ * ]
40
+ * }],
41
+ * moveRight: [{
42
+ * name: 'position.x',
43
+ * component: sprite.getComponent('Transform'),
44
+ * values: [
45
+ * { time: 0, value: 0 },
46
+ * { time: 2000, value: 500, tween: 'ease-out-quad' }
47
+ * ]
48
+ * }]
49
+ * }
50
+ * }));
51
+ *
52
+ * // 播放动画
53
+ * const transition = sprite.getComponent('Transition');
54
+ * transition.play('fadeIn'); // 播放一次
55
+ * transition.play('moveRight', Infinity); // 无限循环
56
+ *
57
+ * // 监听动画事件
58
+ * transition.on('finish', (name) => {
59
+ * console.log('动画完成:', name);
60
+ * });
61
+ * ```
62
+ */
15
63
  export declare class Transition extends Component<TransitionParams> {
64
+ /** 组件名称 */
16
65
  static componentName: string;
66
+ /** 动画实例映射表 */
17
67
  private animations;
68
+ /** Tween.js 动画组 */
18
69
  tweenGroup: Group;
70
+ /** 动画组配置,key 为动画名称,value 为动画配置数组 */
19
71
  group: Record<string, AnimationStruct[]>;
72
+ /** 当前时间戳 */
20
73
  private currentTime;
74
+ /** 待播放的动画队列 */
21
75
  private needPlay;
76
+ /**
77
+ * 初始化组件
78
+ *
79
+ * @param params - 初始化参数
80
+ * @param params.group - 动画组配置对象
81
+ */
22
82
  init({ group }?: {
23
83
  group: {};
24
84
  }): void;
25
85
  awake(): void;
86
+ /**
87
+ * 播放动画
88
+ *
89
+ * @param name - 动画名称,如果不传则播放第一个动画
90
+ * @param iteration - 循环次数,默认 1,传 Infinity 为无限循环
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * transition.play('fadeIn'); // 播放一次
95
+ * transition.play('rotate', 3); // 循环播放 3 次
96
+ * transition.play('bounce', Infinity); // 无限循环
97
+ * ```
98
+ */
26
99
  play(name: string, iteration?: number): void;
100
+ /**
101
+ * 停止动画
102
+ *
103
+ * @param name - 动画名称,如果不传则停止所有动画
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * transition.stop('fadeIn'); // 停止指定动画
108
+ * transition.stop(); // 停止所有动画
109
+ * ```
110
+ */
27
111
  stop(name: any): void;
28
112
  onPause(): void;
29
113
  onResume(): void;
@@ -36,8 +120,21 @@ declare interface TransitionParams {
36
120
  group: Record<string, AnimationStruct[]>;
37
121
  }
38
122
 
123
+ /**
124
+ * 过渡动画系统
125
+ *
126
+ * TransitionSystem 是一个轻量级系统,主要用于注册 Transition 插件到游戏中。
127
+ * 实际的动画逻辑由 Transition 组件自身的 update 方法处理。
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * game.addSystem(new TransitionSystem());
132
+ * ```
133
+ */
39
134
  export declare class TransitionSystem extends System {
135
+ /** 系统名称 */
40
136
  static systemName: string;
137
+ /** 系统实例名称 */
41
138
  readonly name = "transition";
42
139
  }
43
140
 
@@ -130,14 +130,72 @@ class Animation {
130
130
  }
131
131
  }
132
132
 
133
+ /**
134
+ * 过渡动画组件(基于 Tween.js)
135
+ *
136
+ * Transition 组件为游戏对象提供补间动画功能,可以平滑地改变组件属性。
137
+ * 它基于 Tween.js 实现,支持多种缓动函数、动画组、循环播放等高级功能。
138
+ *
139
+ * 主要功能:
140
+ * - 支持多个命名动画组
141
+ * - 可配置关键帧和缓动函数
142
+ * - 支持动画循环和迭代次数
143
+ * - 提供播放、暂停、停止控制
144
+ * - 支持动画完成和更新事件
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * const sprite = new GameObject('sprite');
149
+ * sprite.addComponent(new Transition({
150
+ * group: {
151
+ * fadeIn: [{
152
+ * name: 'alpha',
153
+ * component: sprite.getComponent('Sprite'),
154
+ * values: [
155
+ * { time: 0, value: 0, tween: 'ease-in' },
156
+ * { time: 1000, value: 1 }
157
+ * ]
158
+ * }],
159
+ * moveRight: [{
160
+ * name: 'position.x',
161
+ * component: sprite.getComponent('Transform'),
162
+ * values: [
163
+ * { time: 0, value: 0 },
164
+ * { time: 2000, value: 500, tween: 'ease-out-quad' }
165
+ * ]
166
+ * }]
167
+ * }
168
+ * }));
169
+ *
170
+ * // 播放动画
171
+ * const transition = sprite.getComponent('Transition');
172
+ * transition.play('fadeIn'); // 播放一次
173
+ * transition.play('moveRight', Infinity); // 无限循环
174
+ *
175
+ * // 监听动画事件
176
+ * transition.on('finish', (name) => {
177
+ * console.log('动画完成:', name);
178
+ * });
179
+ * ```
180
+ */
133
181
  class Transition extends Component {
134
182
  constructor() {
135
183
  super(...arguments);
184
+ /** 动画实例映射表 */
136
185
  this.animations = {};
186
+ /** 动画组配置,key 为动画名称,value 为动画配置数组 */
137
187
  this.group = {};
188
+ /** 当前时间戳 */
138
189
  this.currentTime = 0;
190
+ /** 待播放的动画队列 */
139
191
  this.needPlay = [];
140
192
  }
193
+ /**
194
+ * 初始化组件
195
+ *
196
+ * @param params - 初始化参数
197
+ * @param params.group - 动画组配置对象
198
+ */
141
199
  init({ group } = { group: {} }) {
142
200
  this.group = group;
143
201
  this.tweenGroup = new Group();
@@ -147,6 +205,19 @@ class Transition extends Component {
147
205
  this.newAnimation(name);
148
206
  }
149
207
  }
208
+ /**
209
+ * 播放动画
210
+ *
211
+ * @param name - 动画名称,如果不传则播放第一个动画
212
+ * @param iteration - 循环次数,默认 1,传 Infinity 为无限循环
213
+ *
214
+ * @example
215
+ * ```typescript
216
+ * transition.play('fadeIn'); // 播放一次
217
+ * transition.play('rotate', 3); // 循环播放 3 次
218
+ * transition.play('bounce', Infinity); // 无限循环
219
+ * ```
220
+ */
150
221
  play(name, iteration) {
151
222
  if (!name) {
152
223
  name = Object.keys(this.group)[0];
@@ -158,6 +229,17 @@ class Transition extends Component {
158
229
  this.needPlay.push({ name, iteration });
159
230
  }
160
231
  }
232
+ /**
233
+ * 停止动画
234
+ *
235
+ * @param name - 动画名称,如果不传则停止所有动画
236
+ *
237
+ * @example
238
+ * ```typescript
239
+ * transition.stop('fadeIn'); // 停止指定动画
240
+ * transition.stop(); // 停止所有动画
241
+ * ```
242
+ */
161
243
  stop(name) {
162
244
  var _a, _b;
163
245
  if (!name) {
@@ -211,14 +293,28 @@ class Transition extends Component {
211
293
  this.animations[name] = animation;
212
294
  }
213
295
  }
296
+ /** 组件名称 */
214
297
  Transition.componentName = 'Transition';
215
298
 
299
+ /**
300
+ * 过渡动画系统
301
+ *
302
+ * TransitionSystem 是一个轻量级系统,主要用于注册 Transition 插件到游戏中。
303
+ * 实际的动画逻辑由 Transition 组件自身的 update 方法处理。
304
+ *
305
+ * @example
306
+ * ```typescript
307
+ * game.addSystem(new TransitionSystem());
308
+ * ```
309
+ */
216
310
  class TransitionSystem extends System {
217
311
  constructor() {
218
312
  super(...arguments);
313
+ /** 系统实例名称 */
219
314
  this.name = 'transition';
220
315
  }
221
316
  }
317
+ /** 系统名称 */
222
318
  TransitionSystem.systemName = 'transition';
223
319
 
224
320
  export { Transition, TransitionSystem };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eva/plugin-transition",
3
- "version": "2.0.1-beta.27",
3
+ "version": "2.0.1-beta.28",
4
4
  "description": "@eva/plugin-transition",
5
5
  "main": "index.js",
6
6
  "module": "dist/plugin-transition.esm.js",
@@ -18,7 +18,7 @@
18
18
  "license": "MIT",
19
19
  "homepage": "https://eva.js.org",
20
20
  "dependencies": {
21
- "@eva/eva.js": "2.0.1-beta.27",
21
+ "@eva/eva.js": "2.0.1-beta.28",
22
22
  "@tweenjs/tween.js": "^18.6.4",
23
23
  "sprite-timeline": "^1.10.2"
24
24
  }