@ives_xxz/framework 1.0.0

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.
Files changed (139) hide show
  1. package/FW.d.ts +1845 -0
  2. package/FW.d.ts.meta +6 -0
  3. package/Framework.ts +148 -0
  4. package/Framework.ts.meta +10 -0
  5. package/README.md +93 -0
  6. package/README.md.meta +6 -0
  7. package/animation/FWAnimation.ts +13 -0
  8. package/animation/FWAnimation.ts.meta +10 -0
  9. package/animation/FWSkeleton.ts +176 -0
  10. package/animation/FWSkeleton.ts.meta +10 -0
  11. package/animation/FWTween.ts +60 -0
  12. package/animation/FWTween.ts.meta +10 -0
  13. package/animation.meta +13 -0
  14. package/component/FWVirtualViewComponent.ts +2080 -0
  15. package/component/FWVirtualViewComponent.ts.meta +10 -0
  16. package/component.meta +13 -0
  17. package/config/FWAssetConfig.ts +7 -0
  18. package/config/FWAssetConfig.ts.meta +10 -0
  19. package/config.meta +13 -0
  20. package/controller/FWLayerController.ts +236 -0
  21. package/controller/FWLayerController.ts.meta +10 -0
  22. package/controller.meta +13 -0
  23. package/data/FWData.ts +10 -0
  24. package/data/FWData.ts.meta +10 -0
  25. package/data.meta +13 -0
  26. package/define/FWEventDefine.ts +26 -0
  27. package/define/FWEventDefine.ts.meta +10 -0
  28. package/define/FWSystemDefine.ts +133 -0
  29. package/define/FWSystemDefine.ts.meta +10 -0
  30. package/define.meta +13 -0
  31. package/entry/FWEntry.ts +196 -0
  32. package/entry/FWEntry.ts.meta +10 -0
  33. package/entry.meta +13 -0
  34. package/expand/FWCocosExpand.ts +73 -0
  35. package/expand/FWCocosExpand.ts.meta +10 -0
  36. package/expand/FWDecorator.ts +256 -0
  37. package/expand/FWDecorator.ts.meta +10 -0
  38. package/expand/FWRollingViewNesting.ts +191 -0
  39. package/expand/FWRollingViewNesting.ts.meta +10 -0
  40. package/expand/FWTweenExpand.ts +44 -0
  41. package/expand/FWTweenExpand.ts.meta +10 -0
  42. package/expand.meta +13 -0
  43. package/item/FWVirtualListItem.ts +150 -0
  44. package/item/FWVirtualListItem.ts.meta +10 -0
  45. package/item.meta +13 -0
  46. package/language/FWLanguage.ts +69 -0
  47. package/language/FWLanguage.ts.meta +10 -0
  48. package/language/FWLanguageLabelLocalize.ts +144 -0
  49. package/language/FWLanguageLabelLocalize.ts.meta +10 -0
  50. package/language/FWLanguageSkeletonLocalize.ts +106 -0
  51. package/language/FWLanguageSkeletonLocalize.ts.meta +10 -0
  52. package/language/FWLanguageSpriteLocalize.ts +81 -0
  53. package/language/FWLanguageSpriteLocalize.ts.meta +10 -0
  54. package/language.meta +13 -0
  55. package/layer/FWLayer.ts +13 -0
  56. package/layer/FWLayer.ts.meta +10 -0
  57. package/layer.meta +13 -0
  58. package/log/FWLog.ts +115 -0
  59. package/log/FWLog.ts.meta +10 -0
  60. package/log.meta +13 -0
  61. package/logic/FWLogic.ts +10 -0
  62. package/logic/FWLogic.ts.meta +10 -0
  63. package/logic.meta +13 -0
  64. package/machine/FWAnimationMachine.ts +28 -0
  65. package/machine/FWAnimationMachine.ts.meta +10 -0
  66. package/machine/FWStateMachine.ts +75 -0
  67. package/machine/FWStateMachine.ts.meta +10 -0
  68. package/machine.meta +13 -0
  69. package/manager/FWAnimationManager.ts +128 -0
  70. package/manager/FWAnimationManager.ts.meta +10 -0
  71. package/manager/FWAssetManager.ts +349 -0
  72. package/manager/FWAssetManager.ts.meta +10 -0
  73. package/manager/FWAudioManager.ts +289 -0
  74. package/manager/FWAudioManager.ts.meta +10 -0
  75. package/manager/FWBundleManager.ts +91 -0
  76. package/manager/FWBundleManager.ts.meta +10 -0
  77. package/manager/FWComponentManager.ts +25 -0
  78. package/manager/FWComponentManager.ts.meta +10 -0
  79. package/manager/FWEngineManager.ts +63 -0
  80. package/manager/FWEngineManager.ts.meta +10 -0
  81. package/manager/FWEventManager.ts +275 -0
  82. package/manager/FWEventManager.ts.meta +10 -0
  83. package/manager/FWHotUpdateManager.ts +213 -0
  84. package/manager/FWHotUpdateManager.ts.meta +10 -0
  85. package/manager/FWLanguageManager.ts +116 -0
  86. package/manager/FWLanguageManager.ts.meta +10 -0
  87. package/manager/FWLayerManager.ts +490 -0
  88. package/manager/FWLayerManager.ts.meta +10 -0
  89. package/manager/FWManager.ts +8 -0
  90. package/manager/FWManager.ts.meta +10 -0
  91. package/manager/FWObjectManager.ts +91 -0
  92. package/manager/FWObjectManager.ts.meta +10 -0
  93. package/manager/FWResManager.ts +171 -0
  94. package/manager/FWResManager.ts.meta +10 -0
  95. package/manager/FWSocketManager.ts +94 -0
  96. package/manager/FWSocketManager.ts.meta +10 -0
  97. package/manager/FWStateManager.ts +102 -0
  98. package/manager/FWStateManager.ts.meta +10 -0
  99. package/manager/FWTaskManager.ts +38 -0
  100. package/manager/FWTaskManager.ts.meta +10 -0
  101. package/manager/FWTimeManager.ts +473 -0
  102. package/manager/FWTimeManager.ts.meta +10 -0
  103. package/manager/FWUiManager.ts +164 -0
  104. package/manager/FWUiManager.ts.meta +10 -0
  105. package/manager.meta +13 -0
  106. package/package.json +17 -0
  107. package/package.json.meta +6 -0
  108. package/scene/FWScene.ts +25 -0
  109. package/scene/FWScene.ts.meta +10 -0
  110. package/scene.meta +13 -0
  111. package/service/FWService.ts +7 -0
  112. package/service/FWService.ts.meta +10 -0
  113. package/service/http/FWHttp.ts +70 -0
  114. package/service/http/FWHttp.ts.meta +10 -0
  115. package/service/http.meta +13 -0
  116. package/service/socket/FWSocket.ts +236 -0
  117. package/service/socket/FWSocket.ts.meta +10 -0
  118. package/service/socket/FWSocketHandle.ts +17 -0
  119. package/service/socket/FWSocketHandle.ts.meta +10 -0
  120. package/service/socket/FWSocketSender.ts +16 -0
  121. package/service/socket/FWSocketSender.ts.meta +10 -0
  122. package/service/socket.meta +13 -0
  123. package/service.meta +13 -0
  124. package/state/FWState.ts +8 -0
  125. package/state/FWState.ts.meta +10 -0
  126. package/state.meta +13 -0
  127. package/utils/FWLodash.ts +105 -0
  128. package/utils/FWLodash.ts.meta +10 -0
  129. package/utils/FWMask.ts +222 -0
  130. package/utils/FWMask.ts.meta +10 -0
  131. package/utils/FWObject.ts +22 -0
  132. package/utils/FWObject.ts.meta +10 -0
  133. package/utils/FWObjectPool.ts +178 -0
  134. package/utils/FWObjectPool.ts.meta +10 -0
  135. package/utils/FWQueue.ts +47 -0
  136. package/utils/FWQueue.ts.meta +10 -0
  137. package/utils/FWTask.ts +223 -0
  138. package/utils/FWTask.ts.meta +10 -0
  139. package/utils.meta +13 -0
@@ -0,0 +1,473 @@
1
+ import FWLog from '../log/FWLog';
2
+ import { FWManager } from './FWManager';
3
+
4
+ class FWTimer implements FW.Timer {
5
+ constructor() {
6
+ this.executeTime = 0;
7
+ this.id = 0;
8
+ this.repeat = 0;
9
+ this.pause = false;
10
+ }
11
+ pause: boolean;
12
+ resolve: Function;
13
+ executeTime: number;
14
+ id: number;
15
+ repeat: number;
16
+ target: FW.TargetType;
17
+ tag?: string;
18
+ internal?: number;
19
+ cb?: (dt?: number) => void;
20
+ }
21
+
22
+ /**
23
+ * 时间管理器
24
+ */
25
+ export class FWTimeManager extends FWManager implements FW.TimeManager {
26
+ /**
27
+ * 时间对象合集
28
+ */
29
+ private timerMap: Map<number, FWTimer>;
30
+ /**
31
+ * 唯一id
32
+ */
33
+ private uniqueId: number;
34
+ /**
35
+ * 帧时间
36
+ */
37
+ dt: number;
38
+ /**
39
+ * 当前游戏总时间
40
+ */
41
+ gameTotalDuration: number;
42
+
43
+ public initialize(): void {
44
+ this.timerMap = new Map<number, FWTimer>();
45
+ this.gameTotalDuration = 0;
46
+ this.dt = 0;
47
+ this.uniqueId = 0;
48
+ }
49
+
50
+ public getTime(): string {
51
+ const date = new Date();
52
+ const year = date.getFullYear();
53
+ const month = date.getMonth() + 1;
54
+ const day = date.getDate();
55
+ const hours = date.getHours();
56
+ const minutes = date.getMinutes();
57
+ const seconds = date.getSeconds();
58
+ const milliseconds = date.getMilliseconds();
59
+ return `${year}年${month}月${day}日:${hours}:${minutes}:${seconds}.${milliseconds}`;
60
+ }
61
+
62
+ /**
63
+ * 调度器
64
+ * @param cb
65
+ * @param target
66
+ */
67
+
68
+ schedule(
69
+ cb: () => void,
70
+ time?: number,
71
+ repeat?: number,
72
+ target?: Comment | Object | cc.Node,
73
+ tag?: string,
74
+ ): FW.TimerSchedule {
75
+ const timer = new FWTimer();
76
+
77
+ timer.internal = time || 0;
78
+ timer.repeat = repeat || 0;
79
+ timer.tag = tag || '';
80
+ timer.target = target || FW.Entry.scene;
81
+ timer.cb = cb;
82
+ timer.id = this.uniqueId++;
83
+ timer.pause = false;
84
+
85
+ this.timerMap.set(timer.id, timer);
86
+
87
+ return <FW.TimerSchedule>{
88
+ timer: timer,
89
+ unSchedule: () => this.unSchedule.bind(this)(timer.id),
90
+ pauseSchedule: () => this.pauseSchedule.bind(this)(timer.id),
91
+ resumeSchedule: () => this.resumeSchedule.bind(this)(timer.id),
92
+ };
93
+ }
94
+ /**
95
+ * 一次性调度器
96
+ * @param cb
97
+ * @returns
98
+ */
99
+ /**
100
+ * 一次性调度器
101
+ */
102
+ scheduleOnce(cb?: () => void, tag?: string): FW.TimerSchedule;
103
+ /**
104
+ * 一次性调度器
105
+ */
106
+ scheduleOnce(time?: number, tag?: string): FW.TimerSchedule;
107
+ /**
108
+ * 一次性调度器
109
+ */
110
+ scheduleOnce(cb?: () => void, target?: any): FW.TimerSchedule;
111
+ /**
112
+ * 一次性调度器
113
+ */
114
+ scheduleOnce(time?: number, target?: any): FW.TimerSchedule;
115
+ /**
116
+ * 一次性调度器
117
+ */
118
+ scheduleOnce(cb?: () => void, time?: number, tag?: string): FW.TimerSchedule;
119
+ /**
120
+ * 一次性调度器
121
+ */
122
+ scheduleOnce(time?: number, cb?: () => void, tag?: string): FW.TimerSchedule;
123
+ /**
124
+ * 一次性调度器
125
+ */
126
+ scheduleOnce(time?: number, cb?: () => void, target?: any): FW.TimerSchedule;
127
+ /**
128
+ * 一次性调度器
129
+ */
130
+ scheduleOnce(cb?: () => void, time?: number, target?: any): FW.TimerSchedule;
131
+ scheduleOnce(): FW.TimerSchedule {
132
+ let time: number;
133
+ let cb: () => void;
134
+ let tag: string;
135
+ let target: any;
136
+ if (arguments.length == 1) {
137
+ if (typeof arguments[0] === 'number') time = arguments[0];
138
+ else if (typeof arguments[0] === 'function') cb = arguments[0];
139
+ } else if (arguments.length == 2) {
140
+ if (typeof arguments[0] === 'number') {
141
+ time = arguments[0];
142
+ if (typeof arguments[1] === 'string') {
143
+ tag = arguments[1];
144
+ } else if (typeof arguments[1] === 'object') {
145
+ cb = arguments[1];
146
+ } else {
147
+ target = arguments[1];
148
+ }
149
+ } else if (typeof arguments[0] === 'function') {
150
+ cb = arguments[0];
151
+ if (typeof arguments[1] === 'string') {
152
+ tag = arguments[1];
153
+ } else if (typeof arguments[1] === 'number') {
154
+ time = arguments[1];
155
+ } else {
156
+ target = arguments[1];
157
+ }
158
+ }
159
+ } else if (arguments.length == 3) {
160
+ if (typeof arguments[0] === 'number') {
161
+ time = arguments[0];
162
+ cb = arguments[1];
163
+ if (typeof arguments[2] === 'string') {
164
+ tag = arguments[2];
165
+ } else {
166
+ target = arguments[2];
167
+ }
168
+ } else if (typeof arguments[0] === 'function') {
169
+ cb = arguments[0];
170
+ time = arguments[1];
171
+ if (typeof arguments[2] === 'string') {
172
+ tag = arguments[2];
173
+ } else {
174
+ target = arguments[2];
175
+ }
176
+ }
177
+ }
178
+
179
+ const timer = new FWTimer();
180
+ timer.id = this.uniqueId++;
181
+ timer.pause = false;
182
+ timer.cb = cb;
183
+ timer.repeat = 0;
184
+ timer.internal = time || 0;
185
+ timer.target = target || FW.Entry.scene;
186
+ timer.tag = tag;
187
+
188
+ const promise = new Promise<void>((resolve) => {
189
+ timer.resolve = resolve;
190
+ });
191
+
192
+ this.timerMap.set(timer.id, timer);
193
+
194
+ return <FW.TimerSchedule>{
195
+ timer: timer,
196
+ promise: promise,
197
+ unSchedule: () => this.unSchedule.bind(this)(timer.id),
198
+ pauseSchedule: () => this.pauseSchedule.bind(this)(timer.id),
199
+ resumeSchedule: () => this.resumeSchedule.bind(this)(timer.id),
200
+ };
201
+ }
202
+
203
+ /**
204
+ * 停止调度器
205
+ * @param tag
206
+ */
207
+ unSchedule(tag: string);
208
+ /**
209
+ * 停止调度器
210
+ * @param target: Comment | Object | cc.Node
211
+ */
212
+ unSchedule(target: Comment | Object | cc.Node);
213
+ /**
214
+ * 停止调度器
215
+ * @param id: number
216
+ */
217
+ unSchedule(id: number);
218
+ /**
219
+ * 停止调度器
220
+ * @returns
221
+ */
222
+ unSchedule() {
223
+ const args = arguments;
224
+ if (!args || args?.length == 0) return;
225
+
226
+ if (typeof args[0] == 'string') {
227
+ this.removeTimerFromTag(args[0]);
228
+ } else if (typeof args[0] == 'number') {
229
+ this.removeTimerFromId(args[0]);
230
+ } else {
231
+ this.removeTimerFromTarget(args[0]);
232
+ }
233
+ }
234
+
235
+ /**
236
+ * 暂停调度器
237
+ * @param tag
238
+ */
239
+ pauseSchedule(tag: string);
240
+ /**
241
+ * 暂停调度器
242
+ * @param target
243
+ */
244
+ pauseSchedule(target: FW.TargetType);
245
+ /**
246
+ * 暂停调度器
247
+ * @param id
248
+ */
249
+ pauseSchedule(id: number);
250
+ /**
251
+ * 暂停调度器
252
+ * @returns
253
+ */
254
+ pauseSchedule() {
255
+ const args = arguments;
256
+ if (!args || args?.length == 0) return;
257
+ if (typeof args[0] == 'string') {
258
+ this.pauseTimerFromTag(args[0], true);
259
+ } else if (typeof args[0] == 'number') {
260
+ this.pauseTimerFromId(args[0], true);
261
+ } else {
262
+ this.pauseTimerFromTarget(args[0], true);
263
+ }
264
+ }
265
+
266
+ /**
267
+ * 恢复调度器
268
+ * @param tag
269
+ */
270
+ resumeSchedule(tag: string);
271
+ /**
272
+ * 恢复调度器
273
+ * @param target
274
+ */
275
+ resumeSchedule(target: FW.TargetType);
276
+ /**
277
+ * 暂停调度器
278
+ * @param id
279
+ */
280
+ resumeSchedule(id: number);
281
+ /**
282
+ * 恢复调度器
283
+ */
284
+ resumeSchedule() {
285
+ const args = arguments;
286
+ if (!args || args?.length == 0) return;
287
+ if (typeof args[0] == 'string') {
288
+ this.pauseTimerFromTag(args[0], false);
289
+ } else if (typeof args[0] == 'number') {
290
+ this.pauseTimerFromId(args[0], false);
291
+ } else {
292
+ this.pauseTimerFromTarget(args[0], false);
293
+ }
294
+ }
295
+
296
+ /**
297
+ * 每一帧更新
298
+ * @param cb
299
+ * @param tag
300
+ */
301
+ update(cb: (dt: number) => void, tag?: string): void;
302
+ /**
303
+ * 每一帧更新
304
+ * @param cb
305
+ * @param target
306
+ */
307
+ update(cb: (dt: number) => void, target?: FW.TargetType): void;
308
+ /**
309
+ * 每一帧更新
310
+ * @param cb
311
+ * @param tag
312
+ * @param target
313
+ */
314
+ update(cb: (dt: number) => void, tag?: string, target?: FW.TargetType): void;
315
+ /**
316
+ * 每一帧更新
317
+ */
318
+ update() {
319
+ const args = arguments;
320
+
321
+ if (args?.length == 0) return;
322
+
323
+ const timer = new FWTimer();
324
+
325
+ const cb = args[0];
326
+
327
+ var target: FW.TargetType;
328
+ var tag: string;
329
+ if (args.length == 2) {
330
+ if (typeof args[1] == 'string') {
331
+ tag = args[1];
332
+ } else {
333
+ target = args[1];
334
+ }
335
+ } else if (args.length == 3) {
336
+ tag = args[1];
337
+ target = args[2];
338
+ }
339
+
340
+ timer.id = this.uniqueId++;
341
+ timer.cb = cb;
342
+ timer.executeTime = 0;
343
+ timer.internal = 0;
344
+ timer.tag = tag || '';
345
+ timer.target = target || undefined;
346
+ timer.pause = false;
347
+ timer.repeat = cc.macro.REPEAT_FOREVER;
348
+
349
+ this.timerMap.set(timer.id, timer);
350
+ }
351
+
352
+ /** 每一帧更新 */
353
+ onUpdate(dt: number) {
354
+ this.dt = dt;
355
+ this.gameTotalDuration += dt;
356
+ this.timerMap?.forEach((v, k) => {
357
+ if (v.pause) {
358
+ return;
359
+ }
360
+
361
+ if (v.executeTime > v.internal) {
362
+ v.executeTime = 0;
363
+ v.cb?.(dt);
364
+ v.resolve?.();
365
+
366
+ if (v.repeat > 0) {
367
+ v.repeat--;
368
+ if (v.repeat < 0) {
369
+ this.removeTimerFromId(v.id);
370
+ }
371
+ } else {
372
+ this.removeTimerFromId(v.id);
373
+ }
374
+ }
375
+ if (this.timerMap.has(v.id)) {
376
+ v.executeTime += dt;
377
+ }
378
+ });
379
+ }
380
+
381
+ /**
382
+ * 销毁
383
+ */
384
+ onDestroy() {
385
+ this.timerMap.forEach((v, k) => {
386
+ this.unSchedule(v.id);
387
+ this.removeTimerFromId(v.id);
388
+ });
389
+ this.timerMap = new Map<number, FWTimer>();
390
+ this.gameTotalDuration = 0;
391
+ this.dt = 0;
392
+ this.uniqueId = 0;
393
+ }
394
+
395
+ /**
396
+ * 通过id移除调度器
397
+ * @param id
398
+ * @returns
399
+ */
400
+ private removeTimerFromId(id: number) {
401
+ if (!this.timerMap.has(id)) return;
402
+ this.timerMap.delete(id);
403
+ }
404
+
405
+ /**
406
+ * 通过tag移除调度器
407
+ * @param id
408
+ * @returns
409
+ */
410
+ private removeTimerFromTag(tag: string) {
411
+ this.timerMap.forEach((v) => {
412
+ if (v.tag == tag) {
413
+ this.removeTimerFromId(v.id);
414
+ }
415
+ });
416
+ }
417
+
418
+ /**
419
+ * 通过target移除调度器
420
+ * @param id
421
+ * @returns
422
+ */
423
+
424
+ private removeTimerFromTarget(target: FW.TargetType) {
425
+ this.timerMap.forEach((v) => {
426
+ if (v.target == target) {
427
+ this.removeTimerFromId(v.id);
428
+ }
429
+ });
430
+ }
431
+
432
+ /**
433
+ * 通过id暂停调度器
434
+ * @param id
435
+ * @returns
436
+ */
437
+
438
+ private pauseTimerFromId(id: number, pause: boolean) {
439
+ if (!this.timerMap.has(id)) return;
440
+ this.timerMap.get(id).pause = pause;
441
+ }
442
+
443
+ /**
444
+ * 通过tag暂停调度器
445
+ * @param id
446
+ * @returns
447
+ */
448
+
449
+ private pauseTimerFromTag(tag: string, pause: boolean) {
450
+ this.timerMap.forEach((v) => {
451
+ if (v.tag == tag) {
452
+ this.pauseTimerFromId(v.id, pause);
453
+ }
454
+ });
455
+ }
456
+
457
+ /**
458
+ * 通过target暂停调度器
459
+ * @param id
460
+ * @returns
461
+ */
462
+
463
+ private pauseTimerFromTarget(target: FW.TargetType, pause: boolean) {
464
+ this.timerMap.forEach((v) => {
465
+ if (
466
+ v.target == target ||
467
+ (v.target?.uuid && target?.uuid && v.target?.uuid == target?.uuid)
468
+ ) {
469
+ this.pauseTimerFromId(v.id, pause);
470
+ }
471
+ });
472
+ }
473
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "ver": "1.1.0",
3
+ "uuid": "ef42e04a-1f21-4d92-ac3c-916af646e1f8",
4
+ "importer": "typescript",
5
+ "isPlugin": false,
6
+ "loadPluginInWeb": true,
7
+ "loadPluginInNative": true,
8
+ "loadPluginInEditor": false,
9
+ "subMetas": {}
10
+ }
@@ -0,0 +1,164 @@
1
+ import FWLog from '../log/FWLog';
2
+ import { FWManager } from './FWManager';
3
+
4
+ export default class FWUiManager extends FWManager implements FW.UiManager {
5
+ /** 默认点击时间间隔 */
6
+ private eventMap: Map<string, FW.CCEvent | FW.FWEvent> = new Map<
7
+ string,
8
+ FW.CCEvent | FW.FWEvent
9
+ >();
10
+ public initialize(): void {}
11
+ public onDestroy(): void {}
12
+ registerButtonEvent(args: FW.RegisterEventArgs | FW.RegisterEventArgs[]) {
13
+ const register: (eventArgs: FW.RegisterEventArgs) => void = (
14
+ eventArgs: FW.RegisterEventArgs,
15
+ ) => {
16
+ if (eventArgs?.CCEvent?.target instanceof cc.Node) {
17
+ if (cc.isValid(eventArgs.CCEvent.target)) {
18
+ eventArgs.CCEvent.target.on(
19
+ eventArgs.eventName || cc.Node.EventType.TOUCH_END,
20
+ (evt: cc.Event.EventTouch, custom?: string) => {
21
+ /** 未设置禁用默认为启用状态 */
22
+ if (eventArgs.enable === undefined) {
23
+ eventArgs.enable = true;
24
+ }
25
+
26
+ if (!eventArgs.enable) return;
27
+
28
+ /** 检测触发间隔 */
29
+ if (Date.now() - eventArgs.lastResponseTimestamp < eventArgs.responseInterval) {
30
+ return;
31
+ }
32
+
33
+ const button = (eventArgs.CCEvent.target as cc.Node).getComponent(cc.Button);
34
+ if (button && !button.interactable) return;
35
+
36
+ eventArgs.lastResponseTimestamp = Date.now();
37
+ eventArgs.CCEvent.cb?.bind(eventArgs.target)?.(evt, custom, eventArgs.data);
38
+ },
39
+ eventArgs.CCEvent.target,
40
+ );
41
+ this.eventMap.set(
42
+ `${eventArgs.eventName}_${eventArgs.CCEvent.target.name}`,
43
+ eventArgs.CCEvent,
44
+ );
45
+ } else {
46
+ FWLog.warn(`register CCEvent is not cc.Node:${eventArgs.CCEvent.target}`);
47
+ return;
48
+ }
49
+ }
50
+
51
+ if (eventArgs.FWEvent) {
52
+ FW.Entry.evtMgr?.register(
53
+ eventArgs.eventName,
54
+ (
55
+ args1?: FW.EventManagerArgs,
56
+ args2?: FW.EventManagerArgs,
57
+ args3?: FW.EventManagerArgs,
58
+ args4?: FW.EventManagerArgs,
59
+ args5?: FW.EventManagerArgs,
60
+ args6?: FW.EventManagerArgs,
61
+ args7?: FW.EventManagerArgs,
62
+ args8?: FW.EventManagerArgs,
63
+ args9?: FW.EventManagerArgs,
64
+ args10?: FW.EventManagerArgs,
65
+ ) => {
66
+ if (Date.now() - eventArgs.lastResponseTimestamp < (eventArgs.responseInterval || 0)) {
67
+ return;
68
+ }
69
+ eventArgs.lastResponseTimestamp = Date.now();
70
+ eventArgs.FWEvent.cb?.bind(eventArgs.FWEvent.target)(
71
+ args1,
72
+ args2,
73
+ args3,
74
+ args4,
75
+ args5,
76
+ args6,
77
+ args7,
78
+ args8,
79
+ args9,
80
+ args10,
81
+ );
82
+ },
83
+ eventArgs.FWEvent.target,
84
+ );
85
+ this.eventMap.set(eventArgs.eventName, eventArgs.FWEvent);
86
+ }
87
+ };
88
+
89
+ if (Array.isArray(args)) {
90
+ args.forEach((v) => register(v));
91
+ } else {
92
+ register(args);
93
+ }
94
+ }
95
+
96
+ /** 暂停事件 */
97
+ pauseEvent(target: FW.TargetType) {
98
+ if (target instanceof cc.Component) {
99
+ target.node.pauseSystemEvents(true);
100
+ } else if (target instanceof cc.Node) {
101
+ target.pauseSystemEvents(true);
102
+ }
103
+
104
+ this.eventMap.forEach((v) => FW.Entry.evtMgr?.targetPause(v));
105
+ }
106
+
107
+ resumeEvent(target: FW.TargetType) {
108
+ if (target instanceof cc.Component) {
109
+ target.node.resumeSystemEvents(true);
110
+ } else if (target instanceof cc.Node) {
111
+ target.resumeSystemEvents(true);
112
+ }
113
+
114
+ this.eventMap.forEach((v) => FW.Entry.evtMgr?.targetResume(v));
115
+ }
116
+
117
+ unRegisterEvent(args: FW.RegisterEventArgs) {
118
+ if (this.eventMap.has(args.eventName)) return;
119
+ this.eventMap.delete(args.eventName);
120
+ }
121
+
122
+ unRegisterAll() {
123
+ this.eventMap.clear();
124
+ }
125
+
126
+ unRegisterTarget(target: FW.TargetType) {
127
+ this.eventMap.forEach((v) => {
128
+ if (v.target == target) FW.Entry.evtMgr?.targetOff(v.target);
129
+ });
130
+ }
131
+
132
+ hasRegister(eventName: string, target: FW.TargetType): boolean {
133
+ let has = false;
134
+ this.eventMap.forEach((v, key) => {
135
+ if (v.target == target && key == eventName) has = true;
136
+ });
137
+ return has;
138
+ }
139
+
140
+ buttonEnable(target: FW.TargetType) {
141
+ this.eventMap.forEach((v) => {
142
+ const node = v.target as cc.Node;
143
+ if (node == target) {
144
+ node.resumeSystemEvents(true);
145
+ if (node.getComponent(cc.Button)) {
146
+ node.getComponent(cc.Button).enableAutoGrayEffect = true;
147
+ node.getComponent(cc.Button).interactable = true;
148
+ }
149
+ }
150
+ });
151
+ }
152
+ buttonDisable(target: FW.TargetType) {
153
+ this.eventMap.forEach((v) => {
154
+ const node = v.target as cc.Node;
155
+ if (node == target) {
156
+ node.pauseSystemEvents(true);
157
+ if (node.getComponent(cc.Button)) {
158
+ node.getComponent(cc.Button).enableAutoGrayEffect = true;
159
+ node.getComponent(cc.Button).interactable = false;
160
+ }
161
+ }
162
+ });
163
+ }
164
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "ver": "1.1.0",
3
+ "uuid": "d33acc3d-71a7-4fe4-86fb-a939985a4d1f",
4
+ "importer": "typescript",
5
+ "isPlugin": false,
6
+ "loadPluginInWeb": true,
7
+ "loadPluginInNative": true,
8
+ "loadPluginInEditor": false,
9
+ "subMetas": {}
10
+ }
package/manager.meta ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "ver": "1.1.3",
3
+ "uuid": "d591f127-6089-4134-a3fd-24c263480211",
4
+ "importer": "folder",
5
+ "isBundle": false,
6
+ "bundleName": "",
7
+ "priority": 1,
8
+ "compressionType": {},
9
+ "optimizeHotUpdate": {},
10
+ "inlineSpriteFrames": {},
11
+ "isRemoteBundle": {},
12
+ "subMetas": {}
13
+ }
package/package.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@ives_xxz/framework",
3
+ "version": "1.0.0",
4
+ "description": "cocoscreator 2.x mvc framework",
5
+ "main": "index.js",
6
+ "config": {
7
+ "node_modules": "./node_modules"
8
+ },
9
+ "keywords": [
10
+ "123456"
11
+ ],
12
+ "author": "ives",
13
+ "license": "ISC",
14
+ "files": [
15
+ "*"
16
+ ]
17
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "ver": "1.0.2",
3
+ "uuid": "819701b1-36a1-4772-b24e-e2b54759ab35",
4
+ "importer": "json",
5
+ "subMetas": {}
6
+ }