UIView.ts 1.4 KB

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