@ives_xxz/framework 2.1.29 → 2.1.31
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.
- package/Framework.ts +51 -19
- package/FrameworkBase.ts +20 -12
- package/component/FWVirtuaScrollViewComponent.ts +56 -0
- package/component/FWVirtuaScrollViewComponent.ts.meta +10 -0
- package/component/FWVirtualViewComponent.ts +265 -130
- package/define/FWSystemDefine.ts +25 -20
- package/entry/FWEntry.ts +4 -0
- package/manager/FWAssetManager.ts +8 -3
- package/manager/FWLayerManager.ts +107 -57
- package/manager/FWObjectManager.ts +23 -18
- package/package.json +4 -2
- package/types/FW.d.ts +36 -0
- package/utils/FWObjectPool.ts +6 -3
- package/utils/FWUtils.ts +15 -0
- package/utils/FWUtils.ts.meta +10 -0
package/define/FWSystemDefine.ts
CHANGED
|
@@ -44,10 +44,10 @@ export class FWLayerType {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
export class FWTaskStatus {
|
|
47
|
-
IDLE =
|
|
48
|
-
RUNNING =
|
|
49
|
-
PAUSED =
|
|
50
|
-
COMPLETED =
|
|
47
|
+
IDLE = "IDLE";
|
|
48
|
+
RUNNING = "RUNNING";
|
|
49
|
+
PAUSED = "PAUSED";
|
|
50
|
+
COMPLETED = "COMPLETED";
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
export class FWPriorityOrder {
|
|
@@ -91,17 +91,22 @@ export class FWLogType {
|
|
|
91
91
|
* HTTP请求类型
|
|
92
92
|
*/
|
|
93
93
|
export class FWHttpRequestType {
|
|
94
|
-
GET =
|
|
95
|
-
POST =
|
|
94
|
+
GET = "GET";
|
|
95
|
+
POST = "POST";
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
/**
|
|
99
99
|
* 动画机类型
|
|
100
100
|
*/
|
|
101
101
|
export class FWAnimationMachineType {
|
|
102
|
-
TWEEN =
|
|
103
|
-
SKELETON =
|
|
104
|
-
ANIMATION =
|
|
102
|
+
TWEEN = "TWEEN";
|
|
103
|
+
SKELETON = "SKELETON";
|
|
104
|
+
ANIMATION = "ANIMATION";
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export class FWVirtualScrollViewDirection {
|
|
108
|
+
VERTICAL = 0;
|
|
109
|
+
HORIZONTAL = 1;
|
|
105
110
|
}
|
|
106
111
|
|
|
107
112
|
export class FWScrollViewTemplateType {
|
|
@@ -122,23 +127,23 @@ export class FWScrollViewSelectedType {
|
|
|
122
127
|
}
|
|
123
128
|
|
|
124
129
|
export class FWLanguageAssetType {
|
|
125
|
-
LABEL =
|
|
126
|
-
SPRITE =
|
|
127
|
-
SKELETON =
|
|
130
|
+
LABEL = "label";
|
|
131
|
+
SPRITE = "sprite";
|
|
132
|
+
SKELETON = "skeleton";
|
|
128
133
|
}
|
|
129
134
|
|
|
130
135
|
export class FWPromiseStatus {
|
|
131
|
-
PENDING =
|
|
132
|
-
FULFILLED =
|
|
133
|
-
REJECTED =
|
|
134
|
-
CANCELLED =
|
|
136
|
+
PENDING = "pending";
|
|
137
|
+
FULFILLED = "fulfilled";
|
|
138
|
+
REJECTED = "rejected";
|
|
139
|
+
CANCELLED = "cancelled";
|
|
135
140
|
}
|
|
136
141
|
|
|
137
142
|
export class FWLayerState {
|
|
138
|
-
CLOSED =
|
|
139
|
-
OPENING =
|
|
140
|
-
OPENED =
|
|
141
|
-
CLOSING =
|
|
143
|
+
CLOSED = "closed";
|
|
144
|
+
OPENING = "opening";
|
|
145
|
+
OPENED = "opened";
|
|
146
|
+
CLOSING = "closing";
|
|
142
147
|
}
|
|
143
148
|
|
|
144
149
|
export class FWAudioType {
|
package/entry/FWEntry.ts
CHANGED
|
@@ -16,6 +16,7 @@ import FWEngineManager from '../manager/FWEngineManager';
|
|
|
16
16
|
import FWHotUpdateManager from '../manager/FWHotUpdateManager';
|
|
17
17
|
import FWPromiseManager from '../manager/FWPromiseManager';
|
|
18
18
|
import { FWPerformanceManager } from '../manager/FWPerformanceManager';
|
|
19
|
+
import FWUtils from '../utils/FWUtils';
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* 入口脚本
|
|
@@ -90,6 +91,8 @@ export class FWEntry implements FW.Entry {
|
|
|
90
91
|
* 性能管理器
|
|
91
92
|
*/
|
|
92
93
|
performanceMgr: FW.PerformanceManager;
|
|
94
|
+
|
|
95
|
+
utils: FW.Utils;
|
|
93
96
|
/**
|
|
94
97
|
* 当前Scene
|
|
95
98
|
*/
|
|
@@ -119,6 +122,7 @@ export class FWEntry implements FW.Entry {
|
|
|
119
122
|
this.hotUpdateMgr = new FWHotUpdateManager();
|
|
120
123
|
this.promiseMgr = new FWPromiseManager();
|
|
121
124
|
this.performanceMgr = new FWPerformanceManager();
|
|
125
|
+
this.utils = new FWUtils();
|
|
122
126
|
}
|
|
123
127
|
|
|
124
128
|
/**
|
|
@@ -53,12 +53,17 @@ export class FWAssetManager extends FWManager implements FW.AssetManager {
|
|
|
53
53
|
{ url: ske, ext: type },
|
|
54
54
|
],
|
|
55
55
|
async (error, assets) => {
|
|
56
|
-
|
|
56
|
+
if (error != null) {
|
|
57
|
+
reject(error);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const fileName = FW.Entry.utils.getFileName(img);
|
|
61
|
+
const texture: cc.Texture2D = await this.loadRemote(img);
|
|
57
62
|
var asset = new sp.SkeletonData();
|
|
58
|
-
asset.skeletonJson = assets[1];
|
|
59
63
|
asset.atlasText = assets[0];
|
|
64
|
+
asset.skeletonJson = assets[1];
|
|
60
65
|
asset.textures.push(texture);
|
|
61
|
-
asset['textureNames'] = [`${
|
|
66
|
+
asset['textureNames'] = [`${fileName}`];
|
|
62
67
|
asset['_uuid'] = ske;
|
|
63
68
|
resolve(asset);
|
|
64
69
|
},
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { FWManager } from
|
|
2
|
-
import { FWQueue } from
|
|
3
|
-
import { FrameworkBase } from
|
|
4
|
-
import { PerformanceMonitor } from
|
|
1
|
+
import { FWManager } from "./FWManager";
|
|
2
|
+
import { FWQueue } from "../utils/FWQueue";
|
|
3
|
+
import { FrameworkBase } from "../FrameworkBase";
|
|
4
|
+
import { PerformanceMonitor } from "../expand/FWDecorator";
|
|
5
5
|
|
|
6
|
-
const ADD_EXTERNAL_REFERENCE: string =
|
|
6
|
+
const ADD_EXTERNAL_REFERENCE: string = "addExternalReference";
|
|
7
7
|
|
|
8
8
|
export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
9
9
|
private resourceManager: FWLayerResourceManager;
|
|
@@ -34,7 +34,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
34
34
|
/**
|
|
35
35
|
* 异步打开Layer
|
|
36
36
|
*/
|
|
37
|
-
@PerformanceMonitor(
|
|
37
|
+
@PerformanceMonitor("openAsync")
|
|
38
38
|
async openAsync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
39
39
|
data: FW.LayerOpenArgs,
|
|
40
40
|
): Promise<Ctr> {
|
|
@@ -44,17 +44,23 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
44
44
|
/**
|
|
45
45
|
* 同步打开
|
|
46
46
|
*/
|
|
47
|
-
openSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
47
|
+
openSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
48
|
+
data: FW.LayerOpenArgs,
|
|
49
|
+
): Ctr {
|
|
48
50
|
return this.openManager.openLayerSync(data) as Ctr;
|
|
49
51
|
}
|
|
50
52
|
|
|
51
53
|
/**
|
|
52
54
|
* 显示layer并恢复所有节点事件
|
|
53
55
|
*/
|
|
54
|
-
displayLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
56
|
+
displayLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
57
|
+
ctr: Ctr,
|
|
58
|
+
): Ctr {
|
|
55
59
|
const layerData = ctr.layerData;
|
|
56
60
|
|
|
57
|
-
if (
|
|
61
|
+
if (
|
|
62
|
+
!this.dataManager.getLayerMap().has(ctr.layerData.controllerConstructor)
|
|
63
|
+
) {
|
|
58
64
|
FW.Log.warn(`display layer failed,layer name : ${layerData.layerName}`);
|
|
59
65
|
return;
|
|
60
66
|
}
|
|
@@ -74,9 +80,13 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
74
80
|
/**
|
|
75
81
|
* 隐藏layer并隐藏所有节点事件
|
|
76
82
|
*/
|
|
77
|
-
hideLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
83
|
+
hideLayer<Ctr extends FW.LayerController = FW.LayerController>(
|
|
84
|
+
ctr: Ctr,
|
|
85
|
+
): Ctr {
|
|
78
86
|
const layerData = ctr.layerData;
|
|
79
|
-
if (
|
|
87
|
+
if (
|
|
88
|
+
!this.dataManager.getLayerMap().has(ctr.layerData.controllerConstructor)
|
|
89
|
+
) {
|
|
80
90
|
FW.Log.warn(`hide layer failed,layer name : ${layerData.layerName}`);
|
|
81
91
|
return;
|
|
82
92
|
}
|
|
@@ -120,7 +130,9 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
120
130
|
for (let i = 0; i < count; i++) {
|
|
121
131
|
let layerData = this.stackManager.pop();
|
|
122
132
|
let ctr = layerData.controller;
|
|
123
|
-
if (
|
|
133
|
+
if (
|
|
134
|
+
!this.dataManager.getLayerMap().has(layerData.controllerConstructor)
|
|
135
|
+
) {
|
|
124
136
|
return;
|
|
125
137
|
}
|
|
126
138
|
if (cc.isValid(ctr.layer?.node)) {
|
|
@@ -151,7 +163,9 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
151
163
|
/**
|
|
152
164
|
* 关闭layer
|
|
153
165
|
*/
|
|
154
|
-
async close<Ctr extends FW.LayerController = FW.LayerController>(
|
|
166
|
+
async close<Ctr extends FW.LayerController = FW.LayerController>(
|
|
167
|
+
ctr: Ctr,
|
|
168
|
+
): Promise<Ctr> {
|
|
155
169
|
if (!ctr) return;
|
|
156
170
|
|
|
157
171
|
return FW.Entry.promiseMgr.execute(async (resolve, reject) => {
|
|
@@ -242,7 +256,8 @@ export class FWLayerData<T extends FW.LayerController = FW.LayerController>
|
|
|
242
256
|
class FWLayerDataManager {
|
|
243
257
|
private layerMap: Map<new () => FW.LayerController, FWLayerData> = new Map();
|
|
244
258
|
private layerRegistry: Set<new () => FW.LayerController> = new Set();
|
|
245
|
-
private layerControllerFactory: FWLayerControllerFactory =
|
|
259
|
+
private layerControllerFactory: FWLayerControllerFactory =
|
|
260
|
+
new FWLayerControllerFactory();
|
|
246
261
|
/**
|
|
247
262
|
* 获取已存在的Layer
|
|
248
263
|
*/
|
|
@@ -370,7 +385,7 @@ class FWLayerDataManager {
|
|
|
370
385
|
try {
|
|
371
386
|
cb?.(null);
|
|
372
387
|
} catch (e) {
|
|
373
|
-
FW.Log.error(
|
|
388
|
+
FW.Log.error("External ref update callback error:", e);
|
|
374
389
|
}
|
|
375
390
|
});
|
|
376
391
|
layerData.externalReference.clear();
|
|
@@ -395,7 +410,8 @@ class FWLayerDataManager {
|
|
|
395
410
|
}
|
|
396
411
|
|
|
397
412
|
class FWLayerCreateManager {
|
|
398
|
-
private lifecycleManager: FWLayerLifecycleManager =
|
|
413
|
+
private lifecycleManager: FWLayerLifecycleManager =
|
|
414
|
+
new FWLayerLifecycleManager();
|
|
399
415
|
|
|
400
416
|
/**
|
|
401
417
|
* 创建Layer节点
|
|
@@ -476,7 +492,12 @@ class FWLayerOpenManager {
|
|
|
476
492
|
return proxy as Ctr;
|
|
477
493
|
}
|
|
478
494
|
|
|
479
|
-
if (
|
|
495
|
+
if (
|
|
496
|
+
this.queueManager.handlePopupQueue(
|
|
497
|
+
layerData,
|
|
498
|
+
this.dataManager.getLayerMap(),
|
|
499
|
+
)
|
|
500
|
+
) {
|
|
480
501
|
return undefined;
|
|
481
502
|
}
|
|
482
503
|
|
|
@@ -485,7 +506,9 @@ class FWLayerOpenManager {
|
|
|
485
506
|
return this.asyncGenerationLayer(layerData, data);
|
|
486
507
|
}
|
|
487
508
|
|
|
488
|
-
openLayerSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
509
|
+
openLayerSync<Ctr extends FW.LayerController = FW.LayerController>(
|
|
510
|
+
data: FW.LayerOpenArgs,
|
|
511
|
+
): Ctr {
|
|
489
512
|
if (!this.validateOpenData(data)) {
|
|
490
513
|
return undefined;
|
|
491
514
|
}
|
|
@@ -506,7 +529,12 @@ class FWLayerOpenManager {
|
|
|
506
529
|
return proxy as Ctr;
|
|
507
530
|
}
|
|
508
531
|
|
|
509
|
-
if (
|
|
532
|
+
if (
|
|
533
|
+
this.queueManager.handlePopupQueue(
|
|
534
|
+
layerData,
|
|
535
|
+
this.dataManager.getLayerMap(),
|
|
536
|
+
)
|
|
537
|
+
) {
|
|
510
538
|
return undefined;
|
|
511
539
|
}
|
|
512
540
|
|
|
@@ -529,10 +557,9 @@ class FWLayerOpenManager {
|
|
|
529
557
|
/**
|
|
530
558
|
* 异步生成Layer
|
|
531
559
|
*/
|
|
532
|
-
private async asyncGenerationLayer<
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
): Promise<Ctr> {
|
|
560
|
+
private async asyncGenerationLayer<
|
|
561
|
+
Ctr extends FW.LayerController = FW.LayerController,
|
|
562
|
+
>(layerData: FWLayerData, data: FW.LayerOpenArgs): Promise<Ctr> {
|
|
536
563
|
try {
|
|
537
564
|
const res = await this.resourceManager.loadLayerAsync(layerData);
|
|
538
565
|
const ctr = this.createLayer(layerData, res, data) as Ctr;
|
|
@@ -548,10 +575,9 @@ class FWLayerOpenManager {
|
|
|
548
575
|
/**
|
|
549
576
|
* 同步创建Layer
|
|
550
577
|
*/
|
|
551
|
-
private syncGenerationLayer<
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
): Ctr {
|
|
578
|
+
private syncGenerationLayer<
|
|
579
|
+
Ctr extends FW.LayerController = FW.LayerController,
|
|
580
|
+
>(layerData: FWLayerData, data: FW.LayerOpenArgs): Ctr {
|
|
555
581
|
try {
|
|
556
582
|
const res = this.resourceManager.loadLayerSync(layerData);
|
|
557
583
|
const ctr = this.createLayer(layerData, res, data) as Ctr;
|
|
@@ -587,22 +613,30 @@ class FWLayerOpenManager {
|
|
|
587
613
|
|
|
588
614
|
this.createManager.setupLayerLifecycle(layer, layerData.controller);
|
|
589
615
|
|
|
590
|
-
if (
|
|
616
|
+
if (
|
|
617
|
+
layerData.controller.layerType !== FW.SystemDefine.FWLayerType.PERMANENT
|
|
618
|
+
) {
|
|
591
619
|
this.stackManager.push(layerData);
|
|
592
620
|
}
|
|
593
621
|
|
|
594
622
|
this.dataManager.removeFromRegistry(layerData.controllerConstructor);
|
|
595
623
|
|
|
596
|
-
layerData.controllerProxy =
|
|
624
|
+
layerData.controllerProxy =
|
|
625
|
+
this.dataManager.createControllerProxy(layerData);
|
|
597
626
|
|
|
598
627
|
return layerData.controllerProxy as Ctr;
|
|
599
628
|
}
|
|
600
629
|
}
|
|
601
630
|
|
|
602
631
|
class FWLayerResourceManager {
|
|
603
|
-
async loadLayerAsync(
|
|
632
|
+
async loadLayerAsync(
|
|
633
|
+
layerData: FWLayerData,
|
|
634
|
+
): Promise<{ asset: cc.Prefab; uuid: string }> {
|
|
604
635
|
try {
|
|
605
|
-
const res = await FW.Entry.resMgr.loadAssetData<cc.Prefab>(
|
|
636
|
+
const res = await FW.Entry.resMgr.loadAssetData<cc.Prefab>(
|
|
637
|
+
layerData.layerAssetProperty,
|
|
638
|
+
);
|
|
639
|
+
if (!res) return undefined;
|
|
606
640
|
res.user = layerData.layerName;
|
|
607
641
|
res.autoRelease = layerData.controller.autoRelease;
|
|
608
642
|
res.dependentBundle = layerData.controller.layerAssetProperty.bundle;
|
|
@@ -616,7 +650,9 @@ class FWLayerResourceManager {
|
|
|
616
650
|
loadLayerSync(layerData: FWLayerData): { asset: cc.Prefab; uuid: string } {
|
|
617
651
|
layerData.layerAssetProperty.bundle =
|
|
618
652
|
layerData.layerAssetProperty.bundle || FW.Entry.bundleName;
|
|
619
|
-
const res = FW.Entry.resMgr.getAssetData<cc.Prefab>(
|
|
653
|
+
const res = FW.Entry.resMgr.getAssetData<cc.Prefab>(
|
|
654
|
+
layerData.layerAssetProperty,
|
|
655
|
+
);
|
|
620
656
|
res.user = layerData.layerName;
|
|
621
657
|
res.autoRelease = layerData.controller.autoRelease;
|
|
622
658
|
res.dependentBundle = layerData.controller.layerAssetProperty.bundle;
|
|
@@ -628,7 +664,9 @@ class FWLayerStackManager {
|
|
|
628
664
|
private layerStack: FWLayerData[] = [];
|
|
629
665
|
|
|
630
666
|
push(layerData: FWLayerData): void {
|
|
631
|
-
if (
|
|
667
|
+
if (
|
|
668
|
+
layerData.controller.layerType !== FW.SystemDefine.FWLayerType.PERMANENT
|
|
669
|
+
) {
|
|
632
670
|
this.layerStack.push(layerData);
|
|
633
671
|
}
|
|
634
672
|
}
|
|
@@ -638,7 +676,9 @@ class FWLayerStackManager {
|
|
|
638
676
|
}
|
|
639
677
|
|
|
640
678
|
remove(layerData: FWLayerData): void {
|
|
641
|
-
const index = this.layerStack.findIndex(
|
|
679
|
+
const index = this.layerStack.findIndex(
|
|
680
|
+
(v) => v.controller === layerData.controller,
|
|
681
|
+
);
|
|
642
682
|
if (index > -1) {
|
|
643
683
|
this.layerStack.splice(index, 1);
|
|
644
684
|
}
|
|
@@ -654,13 +694,21 @@ class FWLayerStackManager {
|
|
|
654
694
|
}
|
|
655
695
|
|
|
656
696
|
class FWLayerStateManager {
|
|
657
|
-
private layerStates = new Map<
|
|
658
|
-
|
|
659
|
-
|
|
697
|
+
private layerStates = new Map<
|
|
698
|
+
new () => FW.LayerController,
|
|
699
|
+
FW.SystemDefine.FWLayerState
|
|
700
|
+
>();
|
|
701
|
+
|
|
702
|
+
setState(
|
|
703
|
+
ctrType: new () => FW.LayerController,
|
|
704
|
+
state: FW.SystemDefine.FWLayerState,
|
|
705
|
+
): void {
|
|
660
706
|
this.layerStates.set(ctrType, state);
|
|
661
707
|
}
|
|
662
708
|
|
|
663
|
-
getState(
|
|
709
|
+
getState(
|
|
710
|
+
ctrType: new () => FW.LayerController,
|
|
711
|
+
): FW.SystemDefine.FWLayerState {
|
|
664
712
|
return this.layerStates.get(ctrType) || FW.SystemDefine.FWLayerState.CLOSED;
|
|
665
713
|
}
|
|
666
714
|
|
|
@@ -692,7 +740,9 @@ class FWLayerQueueManager {
|
|
|
692
740
|
layerData: FWLayerData,
|
|
693
741
|
layerMap: Map<new () => FW.LayerController, FWLayerData>,
|
|
694
742
|
): boolean {
|
|
695
|
-
if (
|
|
743
|
+
if (
|
|
744
|
+
layerData.controller.layerType === FW.SystemDefine.FWLayerType.POPUP_QUEUE
|
|
745
|
+
) {
|
|
696
746
|
const hasNonPermanentLayers = Array.from(layerMap.values()).some(
|
|
697
747
|
(value) => value.layerType === FW.SystemDefine.FWLayerType.POPUP_QUEUE,
|
|
698
748
|
);
|
|
@@ -732,44 +782,44 @@ class FWLayerQueueManager {
|
|
|
732
782
|
|
|
733
783
|
class FWLayerLifecycleManager {
|
|
734
784
|
setupLifecycleHooks(layer: FW.Layer, ctr: FW.LayerController): void {
|
|
735
|
-
const originalOnLoad = layer[
|
|
736
|
-
layer[
|
|
785
|
+
const originalOnLoad = layer["onLoad"];
|
|
786
|
+
layer["onLoad"] = function () {
|
|
737
787
|
originalOnLoad?.call(this);
|
|
738
788
|
ctr.onLoad?.();
|
|
739
789
|
};
|
|
740
790
|
|
|
741
|
-
const originalStart = layer[
|
|
742
|
-
layer[
|
|
791
|
+
const originalStart = layer["start"];
|
|
792
|
+
layer["start"] = function () {
|
|
743
793
|
originalStart?.call(this);
|
|
744
794
|
ctr.onStart?.();
|
|
745
795
|
};
|
|
746
796
|
|
|
747
|
-
const originalOnEnable = layer[
|
|
748
|
-
layer[
|
|
797
|
+
const originalOnEnable = layer["onEnable"];
|
|
798
|
+
layer["onEnable"] = function () {
|
|
749
799
|
originalOnEnable?.call(this);
|
|
750
800
|
ctr.onEnable?.();
|
|
751
801
|
};
|
|
752
802
|
|
|
753
|
-
const originalOnDisable = layer[
|
|
754
|
-
layer[
|
|
803
|
+
const originalOnDisable = layer["onDisable"];
|
|
804
|
+
layer["onDisable"] = function () {
|
|
755
805
|
originalOnDisable?.call(this);
|
|
756
806
|
ctr.onDisable?.();
|
|
757
807
|
};
|
|
758
808
|
|
|
759
|
-
const originalOnDestroy = layer[
|
|
760
|
-
layer[
|
|
809
|
+
const originalOnDestroy = layer["onDestroy"];
|
|
810
|
+
layer["onDestroy"] = function () {
|
|
761
811
|
originalOnDestroy?.call(this);
|
|
762
812
|
ctr.onDestroy?.();
|
|
763
813
|
};
|
|
764
814
|
|
|
765
|
-
const originalUpdate = layer[
|
|
766
|
-
layer[
|
|
815
|
+
const originalUpdate = layer["update"];
|
|
816
|
+
layer["update"] = function (dt: number) {
|
|
767
817
|
originalUpdate?.call(this, dt);
|
|
768
818
|
ctr.onUpdate?.(dt);
|
|
769
819
|
};
|
|
770
820
|
|
|
771
|
-
const originalLateUpdate = layer[
|
|
772
|
-
layer[
|
|
821
|
+
const originalLateUpdate = layer["lateUpdate"];
|
|
822
|
+
layer["lateUpdate"] = function () {
|
|
773
823
|
originalLateUpdate?.call(this);
|
|
774
824
|
ctr.onLateUpdate?.();
|
|
775
825
|
};
|
|
@@ -780,12 +830,12 @@ class FWLayerControllerFactory {
|
|
|
780
830
|
/**
|
|
781
831
|
* 创建并初始化 LayerController
|
|
782
832
|
*/
|
|
783
|
-
createController<Ctr extends FW.LayerController = FW.LayerController>(
|
|
833
|
+
createController<Ctr extends FW.LayerController = FW.LayerController>(
|
|
834
|
+
type: new () => Ctr,
|
|
835
|
+
): Ctr {
|
|
784
836
|
const ctr = new type();
|
|
785
837
|
|
|
786
|
-
|
|
787
|
-
ctr.initializeDependencies?.();
|
|
788
|
-
}
|
|
838
|
+
ctr.initializeDependencies?.();
|
|
789
839
|
|
|
790
840
|
return ctr;
|
|
791
841
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { FWManager } from './FWManager';
|
|
1
|
+
import { FWObjectPool } from "../utils/FWObjectPool";
|
|
2
|
+
import { FWManager } from "./FWManager";
|
|
4
3
|
|
|
5
|
-
export default class FWObjectManager
|
|
4
|
+
export default class FWObjectManager
|
|
5
|
+
extends FWManager
|
|
6
|
+
implements FW.ObjectManager
|
|
7
|
+
{
|
|
6
8
|
public initialize(): void {
|
|
7
9
|
this.poolMap = new Map<string, FWObjectPool>();
|
|
8
10
|
this.poolIdCounter = 0;
|
|
@@ -22,40 +24,42 @@ export default class FWObjectManager extends FWManager implements FW.ObjectManag
|
|
|
22
24
|
private poolMap: Map<string, FWObjectPool>;
|
|
23
25
|
private poolIdCounter: number = 0;
|
|
24
26
|
|
|
25
|
-
async createObjectPool<T extends
|
|
27
|
+
async createObjectPool<T extends FW.Object = FW.Object>(
|
|
26
28
|
node: cc.Node,
|
|
27
29
|
parent: cc.Node,
|
|
28
30
|
tag?: string,
|
|
29
31
|
): Promise<FWObjectPool>;
|
|
30
|
-
async createObjectPool<T extends
|
|
32
|
+
async createObjectPool<T extends FW.Object = FW.Object>(
|
|
31
33
|
prefab: cc.Prefab,
|
|
32
34
|
parent: cc.Node,
|
|
33
35
|
tag?: string,
|
|
34
36
|
): Promise<FWObjectPool>;
|
|
35
|
-
async createObjectPool<T extends
|
|
37
|
+
async createObjectPool<T extends FW.Object = FW.Object>(
|
|
36
38
|
assetProperty: FW.AssetProperty,
|
|
37
39
|
parent: cc.Node,
|
|
38
40
|
tag?: string,
|
|
39
41
|
): Promise<FWObjectPool>;
|
|
40
|
-
async createObjectPool<T extends
|
|
42
|
+
async createObjectPool<T extends FW.Object = FW.Object>(
|
|
41
43
|
node: cc.Node,
|
|
42
44
|
parent: cc.Node,
|
|
43
45
|
type?: number,
|
|
44
46
|
): Promise<FWObjectPool>;
|
|
45
|
-
async createObjectPool<T extends
|
|
47
|
+
async createObjectPool<T extends FW.Object = FW.Object>(
|
|
46
48
|
prefab: cc.Prefab,
|
|
47
49
|
parent: cc.Node,
|
|
48
50
|
type?: number,
|
|
49
51
|
): Promise<FWObjectPool>;
|
|
50
|
-
async createObjectPool<T extends
|
|
52
|
+
async createObjectPool<T extends FW.Object = FW.Object>(
|
|
51
53
|
assetProperty: FW.AssetProperty,
|
|
52
54
|
parent: cc.Node,
|
|
53
55
|
type?: number,
|
|
54
56
|
): Promise<FWObjectPool>;
|
|
55
|
-
async createObjectPool<
|
|
57
|
+
async createObjectPool<
|
|
58
|
+
T extends FW.Object = FW.Object,
|
|
59
|
+
>(): Promise<FWObjectPool> {
|
|
56
60
|
if (arguments.length < 2 || arguments.length > 3) {
|
|
57
|
-
FW.Log.error(
|
|
58
|
-
throw new Error(
|
|
61
|
+
FW.Log.error("createObjectPool 参数数量错误,需要2-3个参数");
|
|
62
|
+
throw new Error("Invalid arguments count");
|
|
59
63
|
}
|
|
60
64
|
|
|
61
65
|
let objectNode: cc.Node = null;
|
|
@@ -74,7 +78,8 @@ export default class FWObjectManager extends FWManager implements FW.ObjectManag
|
|
|
74
78
|
objectNode = cc.instantiate(objectPrefab);
|
|
75
79
|
} else {
|
|
76
80
|
objectAssetProperty = resources;
|
|
77
|
-
objectPrefab =
|
|
81
|
+
objectPrefab =
|
|
82
|
+
await FW.Entry.resMgr.loadAsset<cc.Prefab>(objectAssetProperty);
|
|
78
83
|
if (!objectPrefab) {
|
|
79
84
|
throw new Error(`加载预制体失败: ${objectAssetProperty.path}`);
|
|
80
85
|
}
|
|
@@ -83,14 +88,14 @@ export default class FWObjectManager extends FWManager implements FW.ObjectManag
|
|
|
83
88
|
|
|
84
89
|
objectParent = arguments[1];
|
|
85
90
|
if (!(objectParent instanceof cc.Node)) {
|
|
86
|
-
throw new Error(
|
|
91
|
+
throw new Error("第二个参数必须是 cc.Node 类型");
|
|
87
92
|
}
|
|
88
93
|
|
|
89
94
|
const arg = arguments[2];
|
|
90
|
-
if (typeof arg ===
|
|
95
|
+
if (typeof arg === "string") {
|
|
91
96
|
objectTag = arg;
|
|
92
97
|
objectType = FW.SystemDefine.FWObjectType.OPACITY;
|
|
93
|
-
} else if (typeof arg ===
|
|
98
|
+
} else if (typeof arg === "number") {
|
|
94
99
|
objectTag = `pool_${this.poolIdCounter++}`;
|
|
95
100
|
objectType = arg;
|
|
96
101
|
} else {
|
|
@@ -107,7 +112,7 @@ export default class FWObjectManager extends FWManager implements FW.ObjectManag
|
|
|
107
112
|
|
|
108
113
|
return pool;
|
|
109
114
|
} catch (error) {
|
|
110
|
-
FW.Log.error(
|
|
115
|
+
FW.Log.error("创建对象池失败:", error);
|
|
111
116
|
|
|
112
117
|
if (objectNode && objectNode.isValid) {
|
|
113
118
|
objectNode.destroy();
|
package/package.json
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ives_xxz/framework",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.31",
|
|
4
4
|
"description": "cocoscreator 2.x mvc framework",
|
|
5
5
|
"main": "index.js",
|
|
6
|
-
"keywords": [
|
|
6
|
+
"keywords": [
|
|
7
|
+
"123456"
|
|
8
|
+
],
|
|
7
9
|
"author": "ives",
|
|
8
10
|
"license": "ISC"
|
|
9
11
|
}
|
package/types/FW.d.ts
CHANGED
|
@@ -68,6 +68,8 @@ declare namespace FW {
|
|
|
68
68
|
promiseMgr: PromiseManager;
|
|
69
69
|
/** 性能管理器 */
|
|
70
70
|
performanceMgr: PerformanceManager;
|
|
71
|
+
/** 通用工具类 */
|
|
72
|
+
utils: Utils;
|
|
71
73
|
/** 场景组件 */
|
|
72
74
|
scene: Scene;
|
|
73
75
|
/** 当前bundle名称 */
|
|
@@ -311,6 +313,7 @@ declare namespace FW {
|
|
|
311
313
|
getEnableObjectMap();
|
|
312
314
|
getDisableObjectMap();
|
|
313
315
|
getAllObjectMap();
|
|
316
|
+
isEmpty():boolean;
|
|
314
317
|
findObjectProperty(node: cc.Node);
|
|
315
318
|
findObjectProperty(component: FW.Object);
|
|
316
319
|
findObjectProperty(uniqueId: number);
|
|
@@ -2040,6 +2043,30 @@ declare namespace FW {
|
|
|
2040
2043
|
y?: number;
|
|
2041
2044
|
};
|
|
2042
2045
|
|
|
2046
|
+
|
|
2047
|
+
type VirtualScrollViewListener =
|
|
2048
|
+
{
|
|
2049
|
+
onRender(element:ObjectProperty,index: number,...args:any);
|
|
2050
|
+
onTouchElement(element:ObjectProperty,index: number,...args:any);
|
|
2051
|
+
}
|
|
2052
|
+
|
|
2053
|
+
type VirtualScrollViewConfig = {
|
|
2054
|
+
/**
|
|
2055
|
+
* 列表个数
|
|
2056
|
+
*/
|
|
2057
|
+
count: number;
|
|
2058
|
+
rollingDirection: cc.Enum<FW.SystemDefine.FWVirtualScrollViewDirection>;
|
|
2059
|
+
/**
|
|
2060
|
+
* 预制体
|
|
2061
|
+
*/
|
|
2062
|
+
prefab: cc.Prefab;
|
|
2063
|
+
/**
|
|
2064
|
+
* 列表容器
|
|
2065
|
+
*/
|
|
2066
|
+
container:cc.Node;
|
|
2067
|
+
}
|
|
2068
|
+
|
|
2069
|
+
|
|
2043
2070
|
type VirtualViewListener = (item: cc.Node, id: number, ...data: any) => void;
|
|
2044
2071
|
type VirtualViewComponentArgs = {
|
|
2045
2072
|
/**
|
|
@@ -2346,6 +2373,10 @@ declare namespace FW {
|
|
|
2346
2373
|
$descriptorOrInitializer?: any,
|
|
2347
2374
|
) => void;
|
|
2348
2375
|
|
|
2376
|
+
type Utils = {
|
|
2377
|
+
getFileName(url: string): string;
|
|
2378
|
+
}
|
|
2379
|
+
|
|
2349
2380
|
declare function timeScale(scale: number);
|
|
2350
2381
|
declare let Entry: Entry;
|
|
2351
2382
|
}
|
|
@@ -2444,6 +2475,11 @@ declare namespace FW {
|
|
|
2444
2475
|
static SUB_LOGIC = 5;
|
|
2445
2476
|
}
|
|
2446
2477
|
|
|
2478
|
+
export class FWVirtualScrollViewDirection{
|
|
2479
|
+
static VERTICAL = 0;
|
|
2480
|
+
static HORIZONTAL = 1;
|
|
2481
|
+
}
|
|
2482
|
+
|
|
2447
2483
|
/**
|
|
2448
2484
|
* 对象类型
|
|
2449
2485
|
*/
|