@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.
|
|
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.
|
|
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
|
}
|