mirror of
https://github.com/Gongxh0901/kunpolibrary
synced 2025-07-30 20:08:40 +00:00
支持信息动态注册(用来兼容代码在bundle中的情况)
This commit is contained in:
parent
5d48c7d913
commit
366e5fbfb0
@ -8,6 +8,7 @@ import { _decorator } from "cc";
|
|||||||
import { GRoot } from "fairygui-cc";
|
import { GRoot } from "fairygui-cc";
|
||||||
import { ModuleBase } from "../module/ModuleBase";
|
import { ModuleBase } from "../module/ModuleBase";
|
||||||
import { debug } from "../tool/log";
|
import { debug } from "../tool/log";
|
||||||
|
import { _uidecorator } from "../ui/UIDecorator";
|
||||||
import { WindowManager } from "../ui/WindowManager";
|
import { WindowManager } from "../ui/WindowManager";
|
||||||
import { WindowResPool } from "../ui/WindowResPool";
|
import { WindowResPool } from "../ui/WindowResPool";
|
||||||
import { CocosWindowContainer } from "./CocosWindowContainer";
|
import { CocosWindowContainer } from "./CocosWindowContainer";
|
||||||
@ -35,6 +36,7 @@ export class CocosUIModule extends ModuleBase {
|
|||||||
this.node.destroyAllChildren();
|
this.node.destroyAllChildren();
|
||||||
/** 注册窗口信息 */
|
/** 注册窗口信息 */
|
||||||
WindowManager.registerUI();
|
WindowManager.registerUI();
|
||||||
|
_uidecorator.setRegisterFinish();
|
||||||
this.onInit();
|
this.onInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +25,23 @@ export class ComponentExtendHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 动态注册自定义组件
|
||||||
|
* @param ctor 组件构造函数
|
||||||
|
* @param pkg 包名
|
||||||
|
* @param name 组件名
|
||||||
|
*/
|
||||||
|
public static dynamicRegister(ctor: any, pkg: string, name: string): void {
|
||||||
|
const componentKey = `${pkg}/${name}`;
|
||||||
|
if (this._registeredComponents.has(componentKey)) {
|
||||||
|
debug(`自定义组件已注册,跳过 组件名:${name} 包名:${pkg}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
debug(`自定义组件注册 组件名:${name} 包名:${pkg}`);
|
||||||
|
this.registerComponent(ctor, pkg, name);
|
||||||
|
this._registeredComponents.add(componentKey);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 注册自定义组件信息
|
* 注册自定义组件信息
|
||||||
* @param info
|
* @param info
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { ObjectHelper } from "../tool/helper/ObjectHelper";
|
import { ObjectHelper } from "../tool/helper/ObjectHelper";
|
||||||
|
import { ComponentExtendHelper } from "./ComponentExtendHelper";
|
||||||
|
import { WindowManager } from "./WindowManager";
|
||||||
export namespace _uidecorator {
|
export namespace _uidecorator {
|
||||||
/** @internal */
|
/** @internal */
|
||||||
const UIPropMeta = "__uipropmeta__"
|
const UIPropMeta = "__uipropmeta__"
|
||||||
@ -76,6 +78,8 @@ export namespace _uidecorator {
|
|||||||
bundle: bundle || "",
|
bundle: bundle || "",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
// 首次引擎注册完成后 动态注册窗口
|
||||||
|
_registerFinish && WindowManager.dynamicRegisterWindow(ctor, groupName, pkgName, name, bundle || "");
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,6 +123,8 @@ export namespace _uidecorator {
|
|||||||
name: name,
|
name: name,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
// 首次引擎注册完成后 动态注册自定义组件
|
||||||
|
_registerFinish && ComponentExtendHelper.dynamicRegister(ctor, pkg, name);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,6 +168,8 @@ export namespace _uidecorator {
|
|||||||
bundle: bundle || "",
|
bundle: bundle || "",
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
// 首次引擎注册完成后 动态注册窗口header
|
||||||
|
_registerFinish && WindowManager.dynamicRegisterHeader(ctor, pkg, name, bundle || "");
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,6 +218,13 @@ export namespace _uidecorator {
|
|||||||
// debug("方法装饰器:", target.constructor, name, descriptor);
|
// debug("方法装饰器:", target.constructor, name, descriptor);
|
||||||
ObjectHelper.getObjectProp(target.constructor, UICBMeta)[name] = descriptor.value;
|
ObjectHelper.getObjectProp(target.constructor, UICBMeta)[name] = descriptor.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let _registerFinish: boolean = false;
|
||||||
|
|
||||||
|
/** 首次UI注册完成 */
|
||||||
|
export function setRegisterFinish(): void {
|
||||||
|
_registerFinish = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let _global = globalThis || window || global;
|
let _global = globalThis || window || global;
|
||||||
|
@ -208,6 +208,7 @@ export class WindowManager {
|
|||||||
* 注册所有UI窗口类到资源池中。 (框架内部使用)
|
* 注册所有UI窗口类到资源池中。 (框架内部使用)
|
||||||
* 该方法遍历所有通过_uidecorator.getWindowMaps()获取的窗口映射,
|
* 该方法遍历所有通过_uidecorator.getWindowMaps()获取的窗口映射,
|
||||||
* 并将每个窗口的资源名称、构造函数、分组和包信息添加到资源池中。
|
* 并将每个窗口的资源名称、构造函数、分组和包信息添加到资源池中。
|
||||||
|
* @internal
|
||||||
*/
|
*/
|
||||||
public static registerUI(): void {
|
public static registerUI(): void {
|
||||||
// 窗口注册
|
// 窗口注册
|
||||||
@ -225,6 +226,18 @@ export class WindowManager {
|
|||||||
ComponentExtendHelper.register();
|
ComponentExtendHelper.register();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 动态注册窗口到资源池中 */
|
||||||
|
public static dynamicRegisterWindow(ctor: any, group: string, pkg: string, name: string, bundle: string): void {
|
||||||
|
debug(`窗口注册 窗口名:${name} 包名:${pkg} 组名:${group}`);
|
||||||
|
this._resPool.add(ctor, group, pkg, name, bundle);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 动态注册窗口header到资源池中 */
|
||||||
|
public static dynamicRegisterHeader(ctor: any, pkg: string, name: string, bundle: string): void {
|
||||||
|
debug(`header注册 header名:${name} 包名:${pkg}`);
|
||||||
|
this._resPool.addHeader(ctor, pkg, name, bundle);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 向窗口管理器添加一个窗口组 如果窗口组名称已存在,则抛出错误. (内部方法)
|
* 向窗口管理器添加一个窗口组 如果窗口组名称已存在,则抛出错误. (内部方法)
|
||||||
* @param group 要添加的窗口组
|
* @param group 要添加的窗口组
|
||||||
|
Loading…
x
Reference in New Issue
Block a user