UIView.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import { _decorator, Component } from 'cc';
  2. import { UICloseReason } from './UILayer';
  3. import { AppKernel } from '../../app/AppKernel';
  4. import type { UIViewID } from '../../define/UIDefine';
  5. const { ccclass } = _decorator;
  6. @ccclass('UIView')
  7. export class UIView<TParams = unknown> extends Component {
  8. /** UIManager 用它识别并接管场景中预放置的 UIView。 */
  9. readonly viewId: UIViewID | null = null;
  10. public getViewID(): UIViewID {
  11. if (!this.viewId) {
  12. return (this?.node?.name || "") as UIViewID;
  13. }
  14. return this.viewId;
  15. }
  16. /**
  17. * 在界面实例化(首次打开)或显示(缓存界面再次打开)之前执行。
  18. * 首次打开时 this 是 Prefab 模板组件,只应进行鉴权、请求数据等无节点状态操作。
  19. */
  20. async internalOpenBefore(params: TParams): Promise<boolean> {
  21. return (await this.onOpenBefore(params)) !== false;
  22. }
  23. async internalCreate(): Promise<void> {
  24. await this.onCreate();
  25. }
  26. async internalOpen(params: TParams): Promise<void> {
  27. this.node.setSiblingIndex
  28. await this.onOpen(params);
  29. }
  30. async internalBeforeClose(reason: UICloseReason): Promise<boolean> {
  31. return this.onBeforeClose(reason);
  32. }
  33. async internalClose(reason: UICloseReason): Promise<void> {
  34. await this.onClose(reason);
  35. }
  36. internalDispose(): void {
  37. this.onDispose();
  38. }
  39. protected onDestroy(): void {
  40. AppKernel.events.offTarget(this);
  41. }
  42. protected async closeSelf() {
  43. await AppKernel.ui.close(this.getViewID());
  44. }
  45. protected onOpenBefore(_params: TParams): boolean | void | Promise<boolean | void> { return true; }
  46. protected onCreate(): void | Promise<void> { }
  47. protected onOpen(_params: TParams): void | Promise<void> { }
  48. protected onFocus(): void { }
  49. protected onBlur(): void { }
  50. protected onBeforeClose(_reason: UICloseReason): boolean | Promise<boolean> { return true; }
  51. protected onClose(_reason: UICloseReason): void | Promise<void> { }
  52. protected onDispose(): void { }
  53. }