dzkcc-mflow 0.0.41 → 0.0.43
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/dist/libs/UIManager.d.ts +1 -1
- package/dist/libs/UIManager.js +25 -9
- package/dist/mflow-tools.zip +0 -0
- package/package.json +1 -1
package/dist/libs/UIManager.d.ts
CHANGED
|
@@ -54,7 +54,6 @@ export interface UIPreloadConfig {
|
|
|
54
54
|
delay?: number;
|
|
55
55
|
}
|
|
56
56
|
interface IInternalView extends IView {
|
|
57
|
-
__group__: string | undefined;
|
|
58
57
|
__isIView__: boolean;
|
|
59
58
|
}
|
|
60
59
|
type ICocosView = IInternalView & Component;
|
|
@@ -77,6 +76,7 @@ declare abstract class CcocosUIManager implements IUIManager {
|
|
|
77
76
|
export declare class UIManager extends CcocosUIManager {
|
|
78
77
|
private _cache;
|
|
79
78
|
private _groupStacks;
|
|
79
|
+
private _view2group;
|
|
80
80
|
private _inputBlocker;
|
|
81
81
|
private _loadingView;
|
|
82
82
|
private _loadingPromises;
|
package/dist/libs/UIManager.js
CHANGED
|
@@ -92,6 +92,7 @@ class UIManager extends CcocosUIManager {
|
|
|
92
92
|
super();
|
|
93
93
|
this._cache = new Map();
|
|
94
94
|
this._groupStacks = new Map();
|
|
95
|
+
this._view2group = new Map();
|
|
95
96
|
this._inputBlocker = null;
|
|
96
97
|
this._loadingView = null;
|
|
97
98
|
this._loadingPromises = new Map();
|
|
@@ -281,12 +282,10 @@ class UIManager extends CcocosUIManager {
|
|
|
281
282
|
if (!view) {
|
|
282
283
|
return;
|
|
283
284
|
}
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
// 2. 否则是通过 open 打开的普通 UI
|
|
287
|
-
if (view.__group__ && view.__group__.trim() != "") {
|
|
285
|
+
const group = this._view2group.get(view.node);
|
|
286
|
+
if (group && group.trim() != "") {
|
|
288
287
|
// 栈式UI:调用 _internalCloseAndPop 来处理返回逻辑
|
|
289
|
-
this._internalCloseAndPop(
|
|
288
|
+
this._internalCloseAndPop(group, false);
|
|
290
289
|
}
|
|
291
290
|
else {
|
|
292
291
|
// 普通UI:直接关闭该视图
|
|
@@ -392,6 +391,16 @@ class UIManager extends CcocosUIManager {
|
|
|
392
391
|
for (let i = 0; i < comps.length; i++) {
|
|
393
392
|
const comp = comps[i];
|
|
394
393
|
if ("__isIView__" in comp && comp.__isIView__) {
|
|
394
|
+
/**
|
|
395
|
+
* 这里需要注意:
|
|
396
|
+
* 1、_view2group中存储的是通过getComponent获取的。
|
|
397
|
+
* 2、这里是通过所node.components获取的。
|
|
398
|
+
* 3、这俩种方式获得的引用可能是不同的(_view2group.get(comp) == undefined)
|
|
399
|
+
* 4、所以这里需要通过comp.constructor来获取视图类型,然后通过getComponent获取引用,确保一致。
|
|
400
|
+
* 5、但我选择了_view2group使用node当作key,这样更稳定。
|
|
401
|
+
*/
|
|
402
|
+
// const viewType = comp.constructor as new () => ICocosView;
|
|
403
|
+
// return target.getComponent(viewType) as ICocosView;
|
|
395
404
|
return comp;
|
|
396
405
|
}
|
|
397
406
|
}
|
|
@@ -500,7 +509,7 @@ class UIManager extends CcocosUIManager {
|
|
|
500
509
|
top.node.removeFromParent();
|
|
501
510
|
}
|
|
502
511
|
// 标记视图所属组并入栈
|
|
503
|
-
view.
|
|
512
|
+
this._view2group.set(view.node, group);
|
|
504
513
|
stack.push(view);
|
|
505
514
|
addChild(view.node);
|
|
506
515
|
this._adjustMaskLayer();
|
|
@@ -531,7 +540,9 @@ class UIManager extends CcocosUIManager {
|
|
|
531
540
|
this._blockInput(true);
|
|
532
541
|
try {
|
|
533
542
|
// 移除当前栈顶视图
|
|
534
|
-
|
|
543
|
+
const removed = stack.pop();
|
|
544
|
+
this._view2group.delete(removed.node);
|
|
545
|
+
yield this._remove(removed, destroy);
|
|
535
546
|
// 恢复上一个视图
|
|
536
547
|
const top = stack[stack.length - 1];
|
|
537
548
|
if (top) {
|
|
@@ -570,9 +581,8 @@ class UIManager extends CcocosUIManager {
|
|
|
570
581
|
yield this._remove(viewInstance, destroy);
|
|
571
582
|
return;
|
|
572
583
|
}
|
|
573
|
-
//
|
|
584
|
+
// 获取视图实例
|
|
574
585
|
const viewInstance = viewKeyOrInstance;
|
|
575
|
-
viewInstance.__group__ = undefined;
|
|
576
586
|
if (!skipAnimation) {
|
|
577
587
|
// * 播放关闭动画,使用async是必要的,因为:
|
|
578
588
|
// * 确保动画播放完成后再执行onExit和节点移除,不然还没播放动画了,UI就已经没了
|
|
@@ -619,6 +629,9 @@ class UIManager extends CcocosUIManager {
|
|
|
619
629
|
this._remove(view, destroy, true);
|
|
620
630
|
}
|
|
621
631
|
}
|
|
632
|
+
for (const view of this._view2group.keys()) {
|
|
633
|
+
this._view2group.delete(view);
|
|
634
|
+
}
|
|
622
635
|
// 调整遮罩层级
|
|
623
636
|
this._adjustMaskLayer();
|
|
624
637
|
}
|
|
@@ -637,6 +650,9 @@ class UIManager extends CcocosUIManager {
|
|
|
637
650
|
}
|
|
638
651
|
}
|
|
639
652
|
}
|
|
653
|
+
for (const view of this._view2group.keys()) {
|
|
654
|
+
this._view2group.delete(view);
|
|
655
|
+
}
|
|
640
656
|
// 清空所有栈
|
|
641
657
|
this._groupStacks.clear();
|
|
642
658
|
// 调整遮罩
|
package/dist/mflow-tools.zip
CHANGED
|
Binary file
|
package/package.json
CHANGED