16ae2ccdd2bc495c43f8b712f5e156a7c55e90df.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. System.register(["__unresolved_0", "cc", "__unresolved_1", "__unresolved_2"], function (_export, _context) {
  2. "use strict";
  3. var _reporterNs, _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, BlockInputEvents, Layers, Node, ViewUtil, LayerUI, LayerPopUp, _crd, Mask;
  4. function _reportPossibleCrUseOfViewUtil(extras) {
  5. _reporterNs.report("ViewUtil", "../../utils/ViewUtil", _context.meta, extras);
  6. }
  7. function _reportPossibleCrUseOfViewParams(extras) {
  8. _reporterNs.report("ViewParams", "./Defines", _context.meta, extras);
  9. }
  10. function _reportPossibleCrUseOfUIConfig(extras) {
  11. _reporterNs.report("UIConfig", "./LayerManager", _context.meta, extras);
  12. }
  13. function _reportPossibleCrUseOfLayerUI(extras) {
  14. _reporterNs.report("LayerUI", "./LayerUI", _context.meta, extras);
  15. }
  16. _export("LayerPopUp", void 0);
  17. return {
  18. setters: [function (_unresolved_) {
  19. _reporterNs = _unresolved_;
  20. }, function (_cc) {
  21. _cclegacy = _cc.cclegacy;
  22. __checkObsolete__ = _cc.__checkObsolete__;
  23. __checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__;
  24. BlockInputEvents = _cc.BlockInputEvents;
  25. Layers = _cc.Layers;
  26. Node = _cc.Node;
  27. }, function (_unresolved_2) {
  28. ViewUtil = _unresolved_2.ViewUtil;
  29. }, function (_unresolved_3) {
  30. LayerUI = _unresolved_3.LayerUI;
  31. }],
  32. execute: function () {
  33. _crd = true;
  34. _cclegacy._RF.push({}, "25d07BQBCFADaSsh/I3GrTX", "LayerPopup", undefined);
  35. /*
  36. * @Date: 2021-11-24 16:08:36
  37. * @LastEditors: dgflash
  38. * @LastEditTime: 2022-09-02 13:44:28
  39. */
  40. __checkObsolete__(['BlockInputEvents', 'EventTouch', 'Layers', 'Node']);
  41. Mask = 'common/prefab/mask';
  42. /* 弹窗层,允许同时弹出多个窗口 */
  43. _export("LayerPopUp", LayerPopUp = class LayerPopUp extends (_crd && LayerUI === void 0 ? (_reportPossibleCrUseOfLayerUI({
  44. error: Error()
  45. }), LayerUI) : LayerUI) {
  46. constructor(name) {
  47. super(name);
  48. /** 触摸事件阻挡 */
  49. this.black = void 0;
  50. /** 半透明遮罩资源 */
  51. this.mask = void 0;
  52. this.init();
  53. }
  54. init() {
  55. this.layer = Layers.Enum.UI_2D;
  56. this.black = this.addComponent(BlockInputEvents);
  57. this.black.enabled = false;
  58. }
  59. async showUi(vp) {
  60. const r = await super.showUi(vp);
  61. if (r) {
  62. // 界面加载完成显示时,启动触摸非窗口区域关闭
  63. this.openVacancyRemove(vp.config); // 界面加载完成显示时,层级事件阻挡
  64. this.black.enabled = true;
  65. }
  66. return r;
  67. }
  68. onCloseWindow(vp) {
  69. super.onCloseWindow(vp); // 界面关闭后,关闭触摸事件阻挡、关闭触摸非窗口区域关闭、关闭遮罩
  70. this.setBlackDisable();
  71. }
  72. /** 设置触摸事件阻挡 */
  73. setBlackDisable() {
  74. // 所有弹窗关闭后,关闭事件阻挡功能
  75. if (this.ui_nodes.size == 0) {
  76. this.black.enabled = false;
  77. this.closeVacancyRemove();
  78. this.closeMask();
  79. }
  80. }
  81. /** 关闭遮罩 */
  82. closeMask() {
  83. if (this.mask == null) return;
  84. let flag = true;
  85. for (let value of this.ui_nodes.values()) {
  86. if (value.config.mask) {
  87. flag = false;
  88. break;
  89. }
  90. }
  91. if (flag) {
  92. this.mask.parent = null;
  93. }
  94. }
  95. /** 启动触摸非窗口区域关闭 */
  96. openVacancyRemove(config) {
  97. if (!this.hasEventListener(Node.EventType.TOUCH_END, this.onTouchEnd, this)) {
  98. this.on(Node.EventType.TOUCH_END, this.onTouchEnd, this);
  99. } // 背景半透明遮罩
  100. if (this.mask == null) {
  101. this.mask = (_crd && ViewUtil === void 0 ? (_reportPossibleCrUseOfViewUtil({
  102. error: Error()
  103. }), ViewUtil) : ViewUtil).createPrefabNode(Mask);
  104. }
  105. if (config.mask) {
  106. this.mask.parent = this;
  107. this.mask.setSiblingIndex(0);
  108. }
  109. }
  110. /** 关闭触摸非窗口区域关闭 */
  111. closeVacancyRemove() {
  112. let flag = true;
  113. for (let value of this.ui_nodes.values()) {
  114. if (value.config.vacancy) {
  115. flag = false;
  116. break;
  117. }
  118. }
  119. if (flag && this.hasEventListener(Node.EventType.TOUCH_END, this.onTouchEnd, this)) {
  120. this.off(Node.EventType.TOUCH_END, this.onTouchEnd, this);
  121. }
  122. }
  123. onTouchEnd(event) {
  124. if (event.target === this) {
  125. this.ui_nodes.forEach(vp => {
  126. // 关闭已显示的界面
  127. if (vp.valid && vp.config.vacancy) {
  128. this.remove(vp.config.prefab, vp.config.destroy);
  129. }
  130. });
  131. }
  132. }
  133. clear(isDestroy) {
  134. super.clear(isDestroy);
  135. this.black.enabled = false;
  136. this.closeVacancyRemove();
  137. this.closeMask();
  138. }
  139. });
  140. _cclegacy._RF.pop();
  141. _crd = false;
  142. }
  143. };
  144. });
  145. //# sourceMappingURL=16ae2ccdd2bc495c43f8b712f5e156a7c55e90df.js.map