UIView.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. async internalCreate(): Promise<void> {
  11. await this.onCreate();
  12. }
  13. async internalOpen(params: TParams): Promise<void> {
  14. this.node.setSiblingIndex
  15. await this.onOpen(params);
  16. }
  17. async internalBeforeClose(reason: UICloseReason): Promise<boolean> {
  18. return this.onBeforeClose(reason);
  19. }
  20. async internalClose(reason: UICloseReason): Promise<void> {
  21. await this.onClose(reason);
  22. }
  23. internalDispose(): void {
  24. this.onDispose();
  25. }
  26. protected onDestroy(): void {
  27. AppKernel.events.offTarget(this);
  28. }
  29. protected onCreate(): void | Promise<void> { }
  30. protected onOpen(_params: TParams): void | Promise<void> { }
  31. protected onFocus(): void { }
  32. protected onBlur(): void { }
  33. protected onBeforeClose(_reason: UICloseReason): boolean | Promise<boolean> { return true; }
  34. protected onClose(_reason: UICloseReason): void | Promise<void> { }
  35. protected onDispose(): void { }
  36. }