添加内部属性标记

This commit is contained in:
宫欣海
2025-03-07 16:02:00 +08:00
parent b6551e9bbf
commit 897d618a0b
71 changed files with 909 additions and 220 deletions

View File

@@ -19,6 +19,7 @@ export class ComponentExtendHelper {
/**
* 注册自定义组件信息
* @param info
* @internal
*/
private static registerComponent(ctor: any, pkg: string, name: string): void {
// 自定义组件扩展

View File

@@ -17,43 +17,52 @@ export interface IWindow {
bgAlpha: number;
/**
* 窗口适配 (框架内部使用)
* @internal
*/
_adapted(): void;
/**
* 初始化方法 (框架内部使用)
* @param swallowTouch 是否吞噬触摸事件
* @internal
*/
_init(swallowTouch: boolean, bgAlpha: number): void;
/**
* 窗口关闭 (框架内部使用)
* @internal
*/
_close(): void;
/**
* 显示窗口 (框架内部使用)
* @param userdata 用户自定义数据
* @internal
*/
_show(userdata?: any): void;
/**
* 从隐藏状态恢复显示
* @internal
*/
_showFromHide(): void;
/**
* 隐藏窗口 (框架内部使用)
* @internal
*/
_hide(): void;
/**
* 窗口被遮挡 被同组或者不同组的其他窗口覆盖 (框架内部使用)
* @internal
*/
_cover(): void;
/**
* 恢复窗口遮挡 被同组或者不同组的其他窗口覆盖恢复 (框架内部使用)
* @internal
*/
_recover(): void;
/**
* 调整窗口的显示层级
* @param depth
* @internal
*/
_setDepth(depth: number): void;
@@ -75,5 +84,6 @@ export interface IWindow {
/** 获取资源栏数据 */
getHeaderInfo(): WindowHeaderInfo;
/** @internal */
_setHeader(header: IWindowHeader): void;
}

View File

@@ -11,35 +11,49 @@ export interface IWindowHeader {
name: string;
/** 窗口适配类型 */
adapterType: AdapterType;
/** 引用计数 */
/** 引用计数 @internal */
_refCount: number;
/**
* 初始化 (内部方法)
* @internal
*/
_init(): void;
/**
* 窗口适配 (内部方法)
* @internal
*/
_adapted(): void;
/**
* 显示 (内部方法)
* @param {IWindow} window 所属窗口
* @internal
*/
_show(window: IWindow): void;
/**
* 隐藏 (内部方法)
* @internal
*/
_hide(): void;
/**
* 关闭 (内部方法)
* @internal
*/
_close(): void;
/** 增加引用计数 (内部方法) */
/**
* 增加引用计数 (内部方法)
* @internal
*/
_addRef(): void;
/** 减少引用计数 (内部方法) */
/**
* 减少引用计数 (内部方法)
* @internal
*/
_decRef(): number;
/** 屏幕大小改变时被调用 (内部方法) */
/**
* 屏幕大小改变时被调用 (内部方法)
* @internal
*/
_screenResize(): void;
}

View File

@@ -16,13 +16,16 @@ interface IPropsInfo {
callbacks: (string | number)[];
}
/** @internal */
export class PropsHelper {
/** @internal */
private static _config: IPropsConfig = {};
/** @internal */
public static setConfig(config: IPropsConfig): void {
this._config = config;
}
/** 序列化属性 */
/** 序列化属性 @internal */
public static serializeProps(component: GComponent, packageName: string): void {
if (!this._config) {
return;
@@ -45,7 +48,7 @@ export class PropsHelper {
this.serializationCallbacksNode(component, callbacks);
}
/** 给界面中定义的属性赋值 */
/** 给界面中定义的属性赋值 @internal */
private static serializationPropsNode(component: GComponent, props: (string | number)[]) {
const propsCount = props.length;
// [name1, len, ...props1, name2, len, ...props2, ...]
@@ -65,6 +68,7 @@ export class PropsHelper {
}
}
/** 给界面中定义的回调赋值 @internal */
private static serializationCallbacksNode(component: GComponent, callbacks: (string | number)[]) {
const propsCount = callbacks.length;
// [name1, len, ...props1, name2, len, ...props2, ...]

View File

@@ -6,9 +6,13 @@
import { ObjectHelper } from "../tool/helper/ObjectHelper";
export namespace _uidecorator {
/** @internal */
const UIPropMeta = "__uipropmeta__"
/** @internal */
const UICBMeta = "__uicbmeta__"
/** @internal */
interface IUIInfoBase {
/** 构造函数 */
ctor: any;
@@ -20,6 +24,7 @@ export namespace _uidecorator {
/**
* 窗口属性注册数据结构
* @internal
*/
interface UIWindowInfo extends IUIInfoBase {
/** 配置信息 */
@@ -32,7 +37,7 @@ export namespace _uidecorator {
name: string;
};
}
/** 用来存储窗口注册信息 */
/** 用来存储窗口注册信息 @internal */
const uiclassMap: Map<any, UIWindowInfo> = new Map();
/** 获取窗口注册信息 */
@@ -67,6 +72,7 @@ export namespace _uidecorator {
/**
* 组件属性注册数据结构
* @internal
*/
interface IUIComInfo extends IUIInfoBase {
/** 配置信息 */
@@ -77,7 +83,7 @@ export namespace _uidecorator {
name: string;
};
}
/** 用来存储组件注册信息 */
/** 用来存储组件注册信息 @internal */
let uicomponentMap: Map<string, IUIComInfo> = new Map();
/** 获取组件注册信息 */
@@ -107,6 +113,7 @@ export namespace _uidecorator {
/**
* header属性注册数据结构
* @internal
*/
interface IUIHeaderInfo extends IUIInfoBase {
/** 配置信息 */
@@ -117,7 +124,7 @@ export namespace _uidecorator {
name: string;
};
}
/** 用来存储组件注册信息 */
/** 用来存储组件注册信息 @internal */
let uiheaderMap: Map<string, IUIHeaderInfo> = new Map();
/** 获取header注册信息 */

View File

@@ -16,23 +16,23 @@ import { WindowManager } from "./WindowManager";
import { WindowInfo } from "./WindowResPool";
export class WindowGroup {
/** 窗口组的名字 */
/** 窗口组的名字 @internal */
private _name: string = "";
/** 窗口组的根节点 */
/** 窗口组的根节点 @internal */
private _root: GComponent;
/** 忽略顶部窗口查询 */
/** 忽略顶部窗口查询 @internal */
private _ignoreQuery: boolean = false;
/** 吞噬触摸事件 */
/** 吞噬触摸事件 @internal */
private _swallowTouch: boolean = false;
/** 窗口容器中的窗口名列表 */
/** 窗口容器中的窗口名列表 @internal */
private _windowNames: string[] = [];
/** 窗口顶部资源栏 */
/** 窗口顶部资源栏 @internal */
private _headers: Map<string, WindowHeader> = new Map();
/** 半透明遮罩的透明度 */
/** 半透明遮罩的透明度 @internal */
private _bgAlpha: number = 0;
/** 半透明节点 */
/** 半透明节点 @internal */
private _alphaGraph: GGraph;
/** 半透明遮罩的颜色 */
/** 半透明遮罩的颜色 @internal */
private _color: Color = new Color(0, 0, 0, 255);
/**
@@ -65,6 +65,8 @@ export class WindowGroup {
* @param root 窗口组的根节点 一个fgui的组件
* @param ignoreQuery 是否忽略顶部窗口查询
* @param swallowTouch 是否吞掉触摸事件
* @param bgAlpha 半透明遮罩的透明度
* @internal
*/
constructor(name: string, root: GComponent, ignoreQuery: boolean, swallowTouch: boolean, bgAlpha: number) {
this._name = name;
@@ -86,6 +88,7 @@ export class WindowGroup {
/**
* 根据窗口名创建窗口 并添加到显示节点
* @param windowName 窗口名
* @internal
*/
private _createWindow(pkg: string, name: string): WindowBase {
let window = UIPackage.createObject(pkg, name) as WindowBase;
@@ -99,6 +102,11 @@ export class WindowGroup {
return window;
}
/**
* 添加窗口到显示节点
* @param window 窗口
* @internal
*/
private _addWindow(window: WindowBase): void {
this._root.addChild(window);
WindowManager._addWindow(window.name, window);
@@ -125,6 +133,7 @@ export class WindowGroup {
/**
* 移除指定名称的窗口。
* @param name 窗口的名称。
* @internal
*/
public _removeWindow(name: string): void {
let index = this._windowNames.lastIndexOf(name);
@@ -162,6 +171,7 @@ export class WindowGroup {
/**
* 将指定名称的窗口移动到窗口组的最顶层。
* @param name 窗口的名称。
* @internal
*/
public _moveWindowToTop(name: string): boolean {
let isMoved = false;
@@ -198,6 +208,7 @@ export class WindowGroup {
* 处理index下层窗口的隐藏状态的私有方法。递归调用
* @param index - 窗口索引
* @param isRecursion - 是否递归调用
* @internal
*/
private _processWindowHideStatus(index: number, isRecursion: boolean = true): void {
if (index < 0) {
@@ -237,6 +248,8 @@ export class WindowGroup {
/**
* 新创建窗口时,根据新创建的窗口类型
* 处理上一个窗口或者所有窗口的关闭
* @param window 新创建的窗口
* @internal
*/
private _processWindowCloseStatus(window: IWindow): void {
// 新创建窗口 如果需要关闭窗口或者关闭所有窗口 处理窗口的关闭
@@ -263,7 +276,10 @@ export class WindowGroup {
}
}
/** 处理header的显示状态 并调整层级 */
/**
* 处理header的显示状态 并调整层级
* @internal
*/
private _processHeaderStatus(): void {
// 找到第一个要显示的header
let firstHeader: WindowHeader = null;
@@ -303,6 +319,7 @@ export class WindowGroup {
/**
* 调整指定窗口的透明度图形。并根据窗口的背景透明度绘制半透明遮罩。
* @param window - 需要调整透明度的窗口对象。
* @internal
*/
private _adjustAlphaGraph(window: IWindow): void {
this._root.setChildIndex(this._alphaGraph, this._root.numChildren - 1);
@@ -329,7 +346,7 @@ export class WindowGroup {
}
/** 根据窗口 创建顶部资源栏 (内部方法) */
/** 根据窗口 创建顶部资源栏 (内部方法) @internal */
private _createHeader(window: IWindow): void {
// 只有创建界面的时候, 才会尝试创建顶部资源栏
let headerInfo = window.getHeaderInfo();
@@ -362,6 +379,7 @@ export class WindowGroup {
/**
* 顶部资源栏窗口 从管理器中移除 (内部方法)
* @param header 资源栏
* @internal
*/
public _removeHeader(header: WindowHeader): void {
if (this._headers.has(header.name)) {
@@ -376,12 +394,13 @@ export class WindowGroup {
/**
* 获取顶部资源栏 (内部方法)
* @param name 资源栏的名称
* @internal
*/
public _getHeader<T extends WindowHeader>(name: string): T | null {
return this._headers.get(name) as T;
}
/** 屏幕大小改变时被调用 (内部方法) */
/** 屏幕大小改变时被调用 (内部方法) @internal */
public _screenResize(): void {
this._headers.forEach((header) => {
header._screenResize();

View File

@@ -7,7 +7,7 @@
export class WindowHeaderInfo {
/** header名字 */
name: string;
/** 自定义数据 用于Header窗口 onShow方法的自定义参数 */
/** 自定义数据 用于Header窗口 onShow方法的自定义参数 @internal */
userdata: any;
/**

View File

@@ -13,13 +13,13 @@ import { WindowGroup } from "./WindowGroup";
import { WindowResPool } from "./WindowResPool";
export class WindowManager {
/** 窗口组 */
/** 窗口组 @internal */
private static _groups: Map<string, WindowGroup> = new Map();
/** 不忽略查询的窗口组名 */
/** 不忽略查询的窗口组名 @internal */
private static _queryGroupNames: string[] = [];
/** 所有窗口全部放到这个map中 */
/** 所有窗口全部放到这个map中 @internal */
private static _windows: Map<string, IWindow> = new Map();
/** 初始化时传入实例 */
/** 初始化时传入实例 @internal */
private static _resPool: WindowResPool;
/** 配置UI包的一些信息 (可以不配置 完全手动管理) */
@@ -175,6 +175,7 @@ export class WindowManager {
/**
* 初始化窗口管理器,设置资源池。 (框架内部使用)
* @param resPool - 窗口资源池实例。
* @internal
*/
public static _init(resPool: WindowResPool): void {
this._resPool = resPool;
@@ -184,6 +185,7 @@ export class WindowManager {
* 向窗口管理器添加一个新窗口。 (框架内部使用)
* @param name 窗口的唯一标识符。
* @param window 要添加的窗口对象,需实现 IWindow 接口。
* @internal
*/
public static _addWindow(name: string, window: IWindow): void {
this._windows.set(name, window);
@@ -192,6 +194,7 @@ export class WindowManager {
/**
* 移除指定名称的窗口。 (框架内部使用)
* @param name 窗口的名称。
* @internal
*/
public static _removeWindow(name: string): void {
if (this.hasWindow(name)) {
@@ -225,6 +228,7 @@ export class WindowManager {
/**
* 向窗口管理器添加一个窗口组 如果窗口组名称已存在,则抛出错误. (内部方法)
* @param group 要添加的窗口组
* @internal
*/
public static _addWindowGroup(group: WindowGroup): void {
if (this._groups.has(group.name)) {
@@ -237,6 +241,7 @@ export class WindowManager {
/**
* 屏幕大小改变时 调用所有窗口的screenResize方法 (内部方法)
* @internal
*/
public static _screenResize(): void {
this._windows.forEach((window: IWindow) => {
@@ -247,6 +252,11 @@ export class WindowManager {
});
}
/**
* 获取资源池实例 (内部方法)
* @returns {WindowResPool} 资源池实例
* @internal
*/
public static _getResPool(): WindowResPool {
return this._resPool;
}

View File

@@ -24,28 +24,34 @@ export interface HeaderInfo {
pkg: string;
}
/** @internal */
export class WindowResPool {
/** 窗口信息池 */
/** 窗口信息池 @internal */
protected _windowInfos: Map<string, WindowInfo> = new Map<string, any>();
/** 窗口header信息池 */
/** 窗口header信息池 @internal */
protected _headerInfos: Map<string, HeaderInfo> = new Map<string, any>();
/** 是否设置过配置内容 */
/** 是否设置过配置内容 @internal */
private _isInit: boolean = false;
/** 窗口名对应的包名列表 */
/** 窗口名对应的包名列表 @internal */
private _windowPkgs: Map<string, string[]> = new Map();
/** 包的引用计数 */
/** 包的引用计数 @internal */
private _pkgRefs: { [pkg: string]: number } = {};
/** UI包路径 @internal */
private _uipath: string = "";
/** 手动管理的包 @internal */
private _manualPackages: Set<string> = new Set();
/** 立即释放的包 @internal */
private _imReleasePackages: Set<string> = new Set();
/** 注册的回调函数 */
/** 注册的回调函数 @internal */
private _showWaitWindow: () => void = null;
/** 隐藏等待窗口的回调函数 @internal */
private _hideWaitWindow: () => void = null;
/** 加载失败回调函数 @internal */
private _fail: (windowName: string, errmsg: string, pkgs: string[]) => void = null;
/** 等待窗口的引用计数 */
/** 等待窗口的引用计数 @internal */
private _waitRef: number = 0;
/**