@kkarum/framework 2.3.17

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