e6a201861178b8e4677bfc6742a00a4a6b251a3a.js 6.1 KB

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