@ives_xxz/framework 1.2.3 → 1.2.5

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.5",
4
4
  "description": "cocoscreator 2.x mvc framework",
5
5
  "main": "index.js",
6
6
  "keywords": [
@@ -170,7 +170,7 @@ export default class FWSocket implements FW.Socket {
170
170
  return;
171
171
  }
172
172
 
173
- this.socket.close();
173
+ this.socket?.close();
174
174
  this.socket = null;
175
175
 
176
176
  this.createSocket(this.address, this.tag, this.sender, this.handle, {
package/utils/FWTask.ts CHANGED
@@ -20,13 +20,13 @@ export default class FWTask implements FW.Task {
20
20
 
21
21
  readonly id: number;
22
22
 
23
- constructor(options?: Partial<FW.TaskOptions>) {
24
- this.id = options?.taskId || 0;
23
+ constructor(options: FW.TaskOptions) {
24
+ this.id = options.taskId || Date.now();
25
25
  this.taskCounter = 0;
26
26
  this.totalTaskDuration = 0;
27
- this.log = options?.log ?? true;
28
- this.frameBudget = options?.frameBudget ?? 16;
29
- this.tasksFrameCount = options?.tasksFrameCount ?? 3;
27
+ this.log = options.log ?? true;
28
+ this.frameBudget = options.frameBudget ?? 16;
29
+ this.tasksFrameCount = options.tasksFrameCount ?? 3;
30
30
  this.performanceData = {
31
31
  frameTimes: [],
32
32
  detailedFrames: [],
@@ -138,13 +138,11 @@ export default class FWTask implements FW.Task {
138
138
  });
139
139
  }
140
140
 
141
- if ((result?.value as any)?.message) {
142
- frameTasks.push({
143
- taskId: taskId,
144
- result: result.done ? FWEventDefine.TaskEvent.COMPLETE : FWEventDefine.TaskEvent.YIELDED,
145
- message: (result?.value as any)?.message,
146
- });
147
- }
141
+ frameTasks.push({
142
+ taskId: taskId,
143
+ result: result.done ? FWEventDefine.TaskEvent.COMPLETE : FWEventDefine.TaskEvent.YIELDED,
144
+ message: (result?.value as any)?.message,
145
+ });
148
146
 
149
147
  processed++;
150
148
  }