@ives_xxz/framework 1.2.3 → 1.2.4

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/FW.d.ts CHANGED
@@ -1092,7 +1092,7 @@ declare namespace FW {
1092
1092
  * tasksFrameCount?: number; 每帧最多执行的任务个数
1093
1093
  */
1094
1094
 
1095
- createTask(options: Partial<FW.TaskOptions>): FW.Task;
1095
+ createTask(options?: Partial<FW.TaskOptions>): FW.Task;
1096
1096
  /**
1097
1097
  * 获取任务
1098
1098
  * @param taskId
@@ -34,6 +34,10 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
34
34
  * 当前已经打开的layer缓存容器
35
35
  */
36
36
  private layerMap: Map<string, FWLayerData>;
37
+ /**
38
+ * 当前所有打开Layer注册表
39
+ */
40
+ private layerRegistry: Set<new () => FW.LayerController>;
37
41
  /**
38
42
  * layer栈队列
39
43
  */
@@ -42,6 +46,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
42
46
  public initialize(): void {
43
47
  this.layerQueue = new FWQueue<FWLayerData>();
44
48
  this.layerMap = new Map<string, FWLayerData>();
49
+ this.layerRegistry = new Set<new () => FW.LayerController>();
45
50
  this.layerStack = [];
46
51
  }
47
52
 
@@ -118,19 +123,22 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
118
123
 
119
124
  let ctr = new data.type();
120
125
 
121
- if (!ctr.isRepeatOpen) {
122
- for (const [key, value] of this.layerMap) {
123
- if (value.layerAssetProperty.path == ctr.layerAssetProperty.path) {
124
- return this.layerMap.get(value.uuid).controller as Ctr;
125
- }
126
- }
127
- }
128
-
129
126
  if (ctr.layerType == FWSystemDefine.FWLayerType.POPUP_QUEUE && !this.layerQueue.isEmpty()) {
130
127
  this.layerQueue.add(ctr.layerData);
131
128
  return;
132
129
  }
133
130
 
131
+ /** 如果不是重复打开的Layer,不是需要添加进队列末尾的,并且已经存在于注册表中的 不进行重复打开 */
132
+ if (
133
+ this.layerRegistry.has(data.type) &&
134
+ !ctr.isRepeatOpen &&
135
+ ctr.layerType != FWSystemDefine.FWLayerType.POPUP_QUEUE
136
+ ) {
137
+ return;
138
+ }
139
+
140
+ this.layerRegistry.add(data.type);
141
+
134
142
  ctr.initialize();
135
143
 
136
144
  const layerData = this.createLayerData(ctr);
@@ -165,6 +173,8 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
165
173
  this.layerStack.push(layerData);
166
174
  }
167
175
 
176
+ this.layerRegistry.delete(data.type);
177
+
168
178
  const proxy = new Proxy(ctr, {
169
179
  get: (target, prop) => {
170
180
  if (prop === ADD_EXTERNAL_REFERENCE) {
@@ -190,19 +200,20 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
190
200
  }
191
201
  let ctr = new data.type();
192
202
 
193
- if (!ctr.isRepeatOpen) {
194
- for (const [key, value] of this.layerMap) {
195
- if (value.layerAssetProperty.path == ctr.layerAssetProperty.path) {
196
- return this.layerMap.get(value.uuid).controller as Ctr;
197
- }
198
- }
199
- }
200
-
201
203
  if (ctr.layerType == FWSystemDefine.FWLayerType.POPUP_QUEUE && !this.layerQueue.isEmpty()) {
202
204
  this.layerQueue.add(ctr.layerData);
203
205
  return;
204
206
  }
205
207
 
208
+ /** 如果不是重复打开的Layer,不是需要添加进队列末尾的,并且已经存在于注册表中的 不进行重复打开 */
209
+ if (
210
+ this.layerRegistry.has(data.type) &&
211
+ !ctr.isRepeatOpen &&
212
+ ctr.layerType != FWSystemDefine.FWLayerType.POPUP_QUEUE
213
+ ) {
214
+ return;
215
+ }
216
+
206
217
  ctr.initialize();
207
218
 
208
219
  const layerData = this.createLayerData(ctr);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ives_xxz/framework",
3
- "version": "1.2.3",
3
+ "version": "1.2.4",
4
4
  "description": "cocoscreator 2.x mvc framework",
5
5
  "main": "index.js",
6
6
  "keywords": [