| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import { _decorator, Component } from 'cc';
- import { UICloseReason } from './UILayer';
- import { AppKernel } from '../../app/AppKernel';
- import type { UIViewID } from '../../define/UIDefine';
- const { ccclass } = _decorator;
- @ccclass('UIView')
- export class UIView<TParams = unknown> extends Component {
- /** UIManager 用它识别并接管场景中预放置的 UIView。 */
- readonly viewId: UIViewID | null = null;
- public getViewID(): UIViewID {
- if (!this.viewId) {
- return (this?.node?.name || "") as UIViewID;
- }
- return this.viewId;
- }
- /**
- * 在界面实例化(首次打开)或显示(缓存界面再次打开)之前执行。
- * 首次打开时 this 是 Prefab 模板组件,只应进行鉴权、请求数据等无节点状态操作。
- */
- async internalOpenBefore(params: TParams): Promise<boolean> {
- return (await this.onBeforeOpen(params)) !== false;
- }
- async internalCreate(): Promise<void> {
- await this.onCreate();
- }
- async internalOpen(params: TParams): Promise<void> {
- this.node.setSiblingIndex(this.node.children.length);
- await this.onOpen(params);
- }
- async internalBeforeClose(reason: UICloseReason): Promise<boolean> {
- return this.onBeforeClose(reason);
- }
- async internalClose(reason: UICloseReason): Promise<void> {
- await this.onClose(reason);
- }
- internalDispose(): void {
- this.onDispose();
- }
- protected onDestroy(): void {
- AppKernel.events.offTarget(this);
- }
- protected async closeSelf() {
- await AppKernel.ui.close(this.getViewID());
- }
- protected onBeforeOpen(_params: TParams): boolean | void | Promise<boolean | void> { return true; }
- protected onCreate(): void | Promise<void> { }
- protected onOpen(_params: TParams): void | Promise<void> { }
- protected onFocus(): void { }
- protected onBlur(): void { }
- protected onBeforeClose(_reason: UICloseReason): boolean | Promise<boolean> { return true; }
- protected onClose(_reason: UICloseReason): void | Promise<void> { }
- protected onDispose(): void { }
- }
|