dzkcc-mflow 0.0.44 → 0.0.45

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.
@@ -53,12 +53,23 @@ export interface IManager {
53
53
  /** 销毁 */
54
54
  dispose(): void;
55
55
  }
56
+ /**
57
+ * UI打开选项
58
+ */
59
+ export interface UIOpenConfig {
60
+ /** 是否显示等待视图 */
61
+ showLoading?: boolean;
62
+ /** 是否可点击遮罩关闭 */
63
+ clickToCloseMask?: boolean;
64
+ /** 自定义参数 */
65
+ args?: any;
66
+ }
56
67
  /**
57
68
  * View 基接口 - 视图生命周期
58
69
  */
59
70
  export interface IView {
60
71
  /** 进入视图 */
61
- onEnter(args?: any): void;
72
+ onEnter(args?: UIOpenConfig): void;
62
73
  /** 退出视图 */
63
74
  onExit(): void;
64
75
  /** 暂停视图(被其他视图覆盖) */
@@ -1,5 +1,5 @@
1
1
  import { Component } from 'cc';
2
- import { IView, IEventManager, ICocosResManager } from '../core';
2
+ import { IView, IEventManager, ICocosResManager, UIOpenConfig } from '../core';
3
3
  export declare abstract class BaseView extends Component implements IView {
4
4
  /** @internal */
5
5
  private readonly __isIView__;
@@ -9,9 +9,26 @@ export declare abstract class BaseView extends Component implements IView {
9
9
  private _loaderProxy?;
10
10
  private _loaderHandlers;
11
11
  protected get res(): ICocosResManager;
12
+ private _openConfig;
13
+ /**
14
+ * 打开时传入的配置数据
15
+ * 仅供框架内部使用,业务使用 this.args代替
16
+ */
17
+ /** @internal */
18
+ get __config__(): UIOpenConfig | undefined;
19
+ /**
20
+ * 打开时传入的配置数据
21
+ * 仅供框架内部使用,业务使用 this.args代替
22
+ */
23
+ /** @internal */
24
+ set __config__(config: UIOpenConfig | undefined);
25
+ /**
26
+ * UIOpenConfig.args
27
+ */
28
+ protected get args(): any;
12
29
  abstract onPause(): void;
13
30
  abstract onResume(): void;
14
- abstract onEnter(args?: any): void;
31
+ abstract onEnter(args?: UIOpenConfig): void;
15
32
  onExit(): void;
16
33
  protected onDestroy(): void;
17
34
  /**
@@ -53,6 +53,29 @@ class BaseView extends Component {
53
53
  }
54
54
  return this._loaderProxy;
55
55
  }
56
+ /**
57
+ * 打开时传入的配置数据
58
+ * 仅供框架内部使用,业务使用 this.args代替
59
+ */
60
+ /** @internal */
61
+ get __config__() {
62
+ return this._openConfig;
63
+ }
64
+ /**
65
+ * 打开时传入的配置数据
66
+ * 仅供框架内部使用,业务使用 this.args代替
67
+ */
68
+ /** @internal */
69
+ set __config__(config) {
70
+ this._openConfig = config;
71
+ }
72
+ /**
73
+ * UIOpenConfig.args
74
+ */
75
+ get args() {
76
+ var _a;
77
+ return (_a = this._openConfig) === null || _a === void 0 ? void 0 : _a.args;
78
+ }
56
79
  onExit() {
57
80
  // 自动清理所有事件监听
58
81
  this._eventHandlers.forEach(({ key, listener }) => {
@@ -1,24 +1,11 @@
1
1
  import { Component, Node, Color } from "cc";
2
- import { IUIManager, IView } from "../core";
2
+ import { IUIManager, IView, UIOpenConfig } from "../core";
3
3
  /**
4
4
  * UI遮罩配置选项
5
5
  */
6
- export interface UIMaskOptions {
6
+ export interface UIMaskConfig {
7
7
  /** 遮罩颜色 */
8
8
  color?: Color;
9
- /** 是否可点击关闭顶层UI */
10
- clickToClose?: boolean;
11
- }
12
- /**
13
- * UI打开选项
14
- */
15
- export interface UIOpenOptions {
16
- /** 是否显示等待视图 */
17
- showLoading?: boolean;
18
- /** 是否可点击遮罩关闭 */
19
- clickToClose?: boolean;
20
- /** 自定义参数 */
21
- args?: any;
22
9
  }
23
10
  /**
24
11
  * 等待视图配置
@@ -53,18 +40,20 @@ export interface UIPreloadConfig {
53
40
  /** 预加载延迟(毫秒) */
54
41
  delay?: number;
55
42
  }
56
- type ICocosView = IView & Component;
43
+ type ICocosView = IView & Component & {
44
+ __config__: UIOpenConfig | undefined;
45
+ };
57
46
  declare abstract class CcocosUIManager implements IUIManager {
58
47
  getTopView(): IView | undefined;
59
- open<T extends keyof UIRegistry>(viewClass: T, args?: UIOpenOptions): Promise<InstanceType<UIRegistry[T]>>;
48
+ open<T extends keyof UIRegistry>(viewClass: T, args?: UIOpenConfig): Promise<InstanceType<UIRegistry[T]>>;
60
49
  close<T extends keyof UIRegistry>(viewClass: T): Promise<void>;
61
- openAndPush<T extends keyof UIRegistry>(viewClass: T, group: string, args?: UIOpenOptions): Promise<InstanceType<UIRegistry[T]>>;
50
+ openAndPush<T extends keyof UIRegistry>(viewClass: T, group: string, args?: UIOpenConfig): Promise<InstanceType<UIRegistry[T]>>;
62
51
  closeAndPop(group: string, destroy?: boolean): Promise<void>;
63
52
  clearStack(group: string, destroy?: boolean): void;
64
53
  closeAll(destroy?: boolean): void;
65
- protected abstract _internalOpen(viewKey: string, args?: UIOpenOptions): Promise<ICocosView>;
54
+ protected abstract _internalOpen(viewKey: string, args?: UIOpenConfig): Promise<ICocosView>;
66
55
  protected abstract _internalClose(viewKey: string | IView, destory?: boolean): Promise<void>;
67
- protected abstract _internalOpenAndPush(viewKey: string, group: string, args?: UIOpenOptions): Promise<ICocosView>;
56
+ protected abstract _internalOpenAndPush(viewKey: string, group: string, args?: UIOpenConfig): Promise<ICocosView>;
68
57
  protected abstract _internalCloseAndPop(group: string, destroy?: boolean): Promise<void>;
69
58
  protected abstract _internalClearStack(group: string, destroy?: boolean): void;
70
59
  protected abstract _internalGetTopView(): ICocosView | undefined;
@@ -88,7 +77,7 @@ export declare class UIManager extends CcocosUIManager {
88
77
  /**
89
78
  * 设置遮罩配置
90
79
  */
91
- setMaskConfig(options: UIMaskOptions): void;
80
+ setMaskConfig(options: UIMaskConfig): void;
92
81
  /**
93
82
  * 设置等待视图配置
94
83
  */
@@ -168,9 +157,9 @@ export declare class UIManager extends CcocosUIManager {
168
157
  protected _internalGetTopView(): ICocosView | undefined;
169
158
  private _load;
170
159
  private _loadInternal;
171
- protected _internalOpen(viewKey: string, options?: UIOpenOptions): Promise<ICocosView>;
160
+ protected _internalOpen(viewKey: string, options?: UIOpenConfig): Promise<ICocosView>;
172
161
  protected _internalClose(viewKeyOrInstance: string | IView, destroy?: boolean): Promise<void>;
173
- protected _internalOpenAndPush(viewKey: string, group: string, options?: UIOpenOptions): Promise<ICocosView>;
162
+ protected _internalOpenAndPush(viewKey: string, group: string, options?: UIOpenConfig): Promise<ICocosView>;
174
163
  protected _internalCloseAndPop(group: string, destroy?: boolean): Promise<void>;
175
164
  /**
176
165
  * 移除视图
@@ -98,11 +98,11 @@ class UIManager extends CcocosUIManager {
98
98
  this._loadingPromises = new Map();
99
99
  this._lruOrder = [];
100
100
  this._preloadedViews = new Set();
101
- this._maskOptions = { clickToClose: true };
101
+ this._maskOptions = {};
102
102
  this._loadingConfig = { enabled: true, delay: 200, minShowTime: 500 };
103
103
  this._cacheConfig = { maxSize: 10, enableLRU: true };
104
104
  this._preloadConfig = { views: [], delay: 1000 };
105
- this._openOptions = { showLoading: true, clickToClose: true };
105
+ this._openOptions = { showLoading: true, clickToCloseMask: true };
106
106
  this._setupMaskClickHandler();
107
107
  this._startPreload();
108
108
  }
@@ -300,13 +300,14 @@ class UIManager extends CcocosUIManager {
300
300
  */
301
301
  _setupMaskClickHandler() {
302
302
  UIMask.on(Node.EventType.TOUCH_END, (event) => {
303
- if (!this._maskOptions.clickToClose) {
304
- return;
305
- }
303
+ var _a;
306
304
  const view = this._internalGetTopView();
307
305
  if (!view) {
308
306
  return;
309
307
  }
308
+ if (!((_a = view.__config__) === null || _a === void 0 ? void 0 : _a.clickToCloseMask)) {
309
+ return;
310
+ }
310
311
  const group = this._view2group.get(view.node);
311
312
  if (group && group.trim() != "") {
312
313
  // 栈式UI:调用 _internalCloseAndPop 来处理返回逻辑
@@ -462,6 +463,7 @@ class UIManager extends CcocosUIManager {
462
463
  const view = yield this._load(viewKey);
463
464
  addChild(view.node);
464
465
  this._adjustMaskLayer();
466
+ view.__config__ = op;
465
467
  // 先执行onEnter初始化,再播放动画
466
468
  view.onEnter(op.args);
467
469
  // 播放打开动画
@@ -520,6 +522,7 @@ class UIManager extends CcocosUIManager {
520
522
  stack.push(view);
521
523
  addChild(view.node);
522
524
  this._adjustMaskLayer();
525
+ view.__config__ = op;
523
526
  // 先执行onEnter初始化,再播放动画
524
527
  view.onEnter(op.args);
525
528
  // 播放打开动画
@@ -629,7 +632,8 @@ class UIManager extends CcocosUIManager {
629
632
  console.warn(`No stack found for group ${group}`);
630
633
  return;
631
634
  }
632
- //forEach 方法会按插入顺序遍历所有 初始存在的元素,即使元素在遍历过程中被删除,也不会影响剩余元素的遍历(已删除的元素不会被重复遍历,但未遍历的元素仍会被处理)。因此可直接在回调中判断并删除目标元素。
635
+ // forEach 方法会按插入顺序遍历所有 初始存在的元素,即使元素在遍历过程中被删除,也不会影响剩余元素的遍历(已删除的元素不会被重复遍历,但未遍历的元素仍会被处理)。
636
+ // 因此可直接在回调中判断并删除目标元素。
633
637
  this._view2group.forEach((value, key, map) => {
634
638
  if (value === group) {
635
639
  map.delete(key);
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dzkcc-mflow",
3
- "version": "0.0.44",
3
+ "version": "0.0.45",
4
4
  "description": "A modular design and process management framework developed for the cocos engine, suitable for decoupling and dependency injection.",
5
5
  "author": "duanzhk",
6
6
  "license": "MIT",