eea1ee21a2d60cdb2463fa0446b63562d3e68198.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. System.register(["__unresolved_0", "cc", "__unresolved_1", "__unresolved_2"], function (_export, _context) {
  2. "use strict";
  3. var _reporterNs, _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, _decorator, Color, Component, find, Label, Node, Sprite, Tween, tween, UITransform, v3, PoolManager, ResUtil, _dec, _class, _class2, _crd, ccclass, property, MsgHints;
  4. function _reportPossibleCrUseOfPoolManager(extras) {
  5. _reporterNs.report("PoolManager", "../core/manager/PoolManager", _context.meta, extras);
  6. }
  7. function _reportPossibleCrUseOfResUtil(extras) {
  8. _reporterNs.report("ResUtil", "./ResUtil", _context.meta, extras);
  9. }
  10. return {
  11. setters: [function (_unresolved_) {
  12. _reporterNs = _unresolved_;
  13. }, function (_cc) {
  14. _cclegacy = _cc.cclegacy;
  15. __checkObsolete__ = _cc.__checkObsolete__;
  16. __checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__;
  17. _decorator = _cc._decorator;
  18. Color = _cc.Color;
  19. Component = _cc.Component;
  20. find = _cc.find;
  21. Label = _cc.Label;
  22. Node = _cc.Node;
  23. Sprite = _cc.Sprite;
  24. Tween = _cc.Tween;
  25. tween = _cc.tween;
  26. UITransform = _cc.UITransform;
  27. v3 = _cc.v3;
  28. }, function (_unresolved_2) {
  29. PoolManager = _unresolved_2.PoolManager;
  30. }, function (_unresolved_3) {
  31. ResUtil = _unresolved_3.ResUtil;
  32. }],
  33. execute: function () {
  34. _crd = true;
  35. _cclegacy._RF.push({}, "f9972T56jtPDKqqzCx+jmQP", "MsgHints", undefined);
  36. __checkObsolete__(['_decorator', 'Color', 'Component', 'find', 'Label', 'Node', 'Sprite', 'Tween', 'tween', 'UITransform', 'v3']);
  37. ({
  38. ccclass,
  39. property
  40. } = _decorator);
  41. /**
  42. * 通用消息提示框
  43. * 使用示例:
  44. * MsgHints.show("这是一条提示消息");
  45. *
  46. * 特性:
  47. * 1. 使用对象池管理
  48. * 2. 动态创建节点(无需预制体)
  49. * 3. 内置Tween动画效果
  50. * 4. 自动回收机制
  51. */
  52. _export("default", MsgHints = (_dec = ccclass("MsgHints"), _dec(_class = (_class2 = class MsgHints extends Component {
  53. /**
  54. * 创建一个msgNode节点
  55. * @returns
  56. */
  57. static createMsgNode() {
  58. var node = (_crd && PoolManager === void 0 ? (_reportPossibleCrUseOfPoolManager({
  59. error: Error()
  60. }), PoolManager) : PoolManager).getName(MsgHints.node_name);
  61. if (!node) {
  62. //创建背景
  63. node = new Node(MsgHints.node_name);
  64. node.addComponent(MsgHints);
  65. node.active = true;
  66. var bgTransform = node.addComponent(UITransform);
  67. bgTransform.width = MsgHints.max_width;
  68. bgTransform.height = 50;
  69. node.setPosition(0, 0, 0);
  70. var sp = node.addComponent(Sprite);
  71. sp.sizeMode = Sprite.SizeMode.TRIMMED;
  72. sp.type = Sprite.Type.SIMPLE;
  73. (_crd && ResUtil === void 0 ? (_reportPossibleCrUseOfResUtil({
  74. error: Error()
  75. }), ResUtil) : ResUtil).setSpriteFrame("msg_hint", sp); //创建文本标签
  76. var labelNode = new Node('label');
  77. var laTransform = labelNode.addComponent(UITransform);
  78. laTransform.width = MsgHints.max_width - MsgHints.padding * 2;
  79. laTransform.height = 50;
  80. var label = labelNode.addComponent(Label);
  81. label.fontSize = 25;
  82. label.color = Color.WHITE;
  83. label.lineHeight = 30;
  84. label.horizontalAlign = Label.HorizontalAlign.CENTER;
  85. label.verticalAlign = Label.VerticalAlign.CENTER;
  86. label.overflow = Label.Overflow.NONE;
  87. label.isBold = true;
  88. labelNode.parent = node;
  89. }
  90. return node;
  91. }
  92. /**
  93. * 设置提示消息内容
  94. * @param msg 消息内容
  95. */
  96. setMsg(msg) {
  97. var label = this.reset();
  98. if (!label) return;
  99. label.string = msg;
  100. this._adjustLayout();
  101. this._playAnimation();
  102. }
  103. /**
  104. * 调整对齐
  105. * @returns
  106. */
  107. _adjustLayout() {
  108. var padding = 20.0;
  109. var label = this.getMsgLable();
  110. var labelTransform = label == null ? void 0 : label.node.getComponent(UITransform);
  111. var bgTransform = this.node.getComponent(UITransform);
  112. if (!labelTransform || !bgTransform) return; // 计算文本实际宽度(不超过 maxWidth)
  113. var labelMax = MsgHints.max_width - MsgHints.padding * 2;
  114. var textWidth = Math.min(labelTransform.width, MsgHints.max_width - MsgHints.padding * 2);
  115. if (textWidth >= labelMax) {
  116. label.overflow = Label.Overflow.RESIZE_HEIGHT;
  117. labelTransform.width = MsgHints.max_width - padding * 2;
  118. bgTransform.width = MsgHints.max_width;
  119. bgTransform.height = labelTransform.height + 10;
  120. } else {
  121. label.overflow = Label.Overflow.NONE;
  122. labelTransform.width = textWidth;
  123. bgTransform.width = textWidth + padding * 2;
  124. bgTransform.height = labelTransform.height + 10 * 3;
  125. }
  126. }
  127. /**
  128. * 播放展示动画
  129. */
  130. _playAnimation() {
  131. Tween.stopAllByTarget(this.node);
  132. this.node.setScale(v3(0, 0, 0));
  133. tween(this.node).to(0.1, {
  134. scale: v3(1.1, 1.1, 1)
  135. }).to(0.1, {
  136. scale: v3(0.9, 0.9, 1)
  137. }).to(0.1, {
  138. scale: v3(1, 1, 1)
  139. }).delay(MsgHints.default_duration).by(0.5, {
  140. position: v3(0, 100, 0)
  141. }).call(() => {
  142. this.reset();
  143. (_crd && PoolManager === void 0 ? (_reportPossibleCrUseOfPoolManager({
  144. error: Error()
  145. }), PoolManager) : PoolManager).putNode(this.node);
  146. }).start();
  147. }
  148. /**
  149. * 重置lable一些属性
  150. */
  151. reset() {
  152. var lable = this.getMsgLable();
  153. var laTransform = lable.node.getComponent(UITransform);
  154. laTransform.width = MsgHints.max_width - MsgHints.padding * 2;
  155. laTransform.height = 50;
  156. lable.overflow = Label.Overflow.NONE;
  157. this.node.setScale(v3(1, 1, 1));
  158. return lable;
  159. }
  160. /**
  161. * 显示提示消息
  162. * @param msg 消息内容
  163. */
  164. static show(msg) {
  165. if (!msg) return; //尝试从对象池获取
  166. var node = this.createMsgNode(); //设置节点到Canvas
  167. var canvas = find("Canvas");
  168. if (canvas) {
  169. node.active = true;
  170. node.parent = canvas; //确保在最上层
  171. node.setSiblingIndex(9999); //设置消息内容
  172. var comp = node.getComponent(MsgHints);
  173. if (comp) {
  174. comp.setMsg(msg);
  175. }
  176. }
  177. }
  178. /**
  179. * 得到文本节点
  180. */
  181. getMsgLable() {
  182. return this.node.getChildByName("label").getComponent(Label);
  183. }
  184. }, _class2.node_name = "MsgHints", _class2.default_duration = 1.5, _class2.max_width = 430, _class2.padding = 15, _class2)) || _class));
  185. _cclegacy._RF.pop();
  186. _crd = false;
  187. }
  188. };
  189. });
  190. //# sourceMappingURL=eea1ee21a2d60cdb2463fa0446b63562d3e68198.js.map