4f359abc84c1824a526252b4797205556deb81d6.js 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. System.register(["__unresolved_0", "cc", "__unresolved_1"], function (_export, _context) {
  2. "use strict";
  3. var _reporterNs, _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, Animation, AnimationClip, instantiate, Prefab, Size, UITransform, v3, resLoader, ViewUtil, _crd;
  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 _reportPossibleCrUseOfresLoader(extras) {
  7. _reporterNs.report("resLoader", "../common/loader/ResLoader", _context.meta, extras);
  8. }
  9. _export("ViewUtil", void 0);
  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. Animation = _cc.Animation;
  18. AnimationClip = _cc.AnimationClip;
  19. instantiate = _cc.instantiate;
  20. Prefab = _cc.Prefab;
  21. Size = _cc.Size;
  22. UITransform = _cc.UITransform;
  23. v3 = _cc.v3;
  24. }, function (_unresolved_2) {
  25. resLoader = _unresolved_2.resLoader;
  26. }],
  27. execute: function () {
  28. _crd = true;
  29. _cclegacy._RF.push({}, "f607cCjAEZHVKVZ/FyRs5bA", "ViewUtil", undefined);
  30. /*
  31. * @Author: dgflash
  32. * @Date: 2021-08-16 09:34:56
  33. * @LastEditors: dgflash
  34. * @LastEditTime: 2023-01-19 14:52:12
  35. */
  36. __checkObsolete__(['Animation', 'AnimationClip', 'EventTouch', 'instantiate', 'Node', 'Prefab', 'Size', 'UITransform', 'v3', 'Vec3']);
  37. /** 显示对象工具 */
  38. _export("ViewUtil", ViewUtil = class ViewUtil {
  39. /**
  40. * 把Node当前的节点树结构根据Node命名转成一个js对象,重名的组件会覆盖,
  41. * Node的name不应该包含空格键,否则将跳过
  42. * @param parent 被遍历的Node组件
  43. * @param obj 绑定的js对象 (可选)
  44. */
  45. static nodeTreeInfoLite(parent, obj) {
  46. var map = obj || new Map();
  47. var items = parent.children;
  48. for (var i = 0; i < items.length; i++) {
  49. var _node = items[i];
  50. if (_node.name.indexOf(" ") < 0) {
  51. map.set(_node.name, _node);
  52. }
  53. ViewUtil.nodeTreeInfoLite(_node, map);
  54. }
  55. return map;
  56. }
  57. /**
  58. * 正则搜索节点名字,符合条件的节点将会返回
  59. * @param reg 正则表达式
  60. * @param parent 要搜索的父节点
  61. * @param nodes 返回的数组(可选)
  62. */
  63. static findNodes(reg, parent, nodes) {
  64. var ns = nodes || [];
  65. var items = parent.children;
  66. for (var i = 0; i < items.length; i++) {
  67. var _name = items[i].name;
  68. if (reg.test(_name)) {
  69. ns.push(items[i]);
  70. }
  71. ViewUtil.findNodes(reg, items[i], ns);
  72. }
  73. return ns;
  74. }
  75. /**
  76. * 节点之间坐标互转
  77. * @param a A节点
  78. * @param b B节点
  79. * @param aPos A节点空间中的相对位置
  80. */
  81. static calculateASpaceToBSpacePos(a, b, aPos) {
  82. var world = a.getComponent(UITransform).convertToWorldSpaceAR(aPos);
  83. return b.getComponent(UITransform).convertToNodeSpaceAR(world);
  84. }
  85. /**
  86. * 屏幕转空间坐标
  87. * @param event 触摸事件
  88. * @param space 转到此节点的坐标空间
  89. */
  90. static calculateScreenPosToSpacePos(event, space) {
  91. var uil = event.getUILocation();
  92. var worldPos = v3(uil.x, uil.y);
  93. return space.getComponent(UITransform).convertToNodeSpaceAR(worldPos);
  94. }
  95. /**
  96. * 显示对象等比缩放
  97. * @param targetWidth 目标宽
  98. * @param targetHeight 目标高
  99. * @param defaultWidth 默认宽
  100. * @param defaultHeight 默认高
  101. */
  102. static uniformScale(targetWidth, targetHeight, defaultWidth, defaultHeight) {
  103. var widthRatio = defaultWidth / targetWidth;
  104. var heightRatio = defaultHeight / targetHeight;
  105. var ratio;
  106. widthRatio < heightRatio ? ratio = widthRatio : ratio = heightRatio;
  107. return new Size(Math.floor(targetWidth * ratio), Math.floor(targetHeight * ratio));
  108. }
  109. /**
  110. * 从资源缓存中找到预制资源名并创建一个显示对象(建议使用GameComponent里的同名方法,能自动管理内存施放)
  111. * @param path 资源路径
  112. * @param bundleName 资源包名
  113. */
  114. static createPrefabNode(path, bundleName) {
  115. if (bundleName === void 0) {
  116. bundleName = (_crd && resLoader === void 0 ? (_reportPossibleCrUseOfresLoader({
  117. error: Error()
  118. }), resLoader) : resLoader).defaultBundleName;
  119. }
  120. var p = (_crd && resLoader === void 0 ? (_reportPossibleCrUseOfresLoader({
  121. error: Error()
  122. }), resLoader) : resLoader).get(path, Prefab, bundleName);
  123. if (p) {
  124. return instantiate(p);
  125. }
  126. return null;
  127. }
  128. /**
  129. * 加载预制并创建预制节点(建议使用GameComponent里的同名方法,能自动管理内存施放)
  130. * @param path 资源路径
  131. * @param bundleName 资源包名
  132. */
  133. static createPrefabNodeAsync(path, bundleName) {
  134. if (bundleName === void 0) {
  135. bundleName = (_crd && resLoader === void 0 ? (_reportPossibleCrUseOfresLoader({
  136. error: Error()
  137. }), resLoader) : resLoader).defaultBundleName;
  138. }
  139. return new Promise( /*#__PURE__*/_asyncToGenerator(function* (resolve, reject) {
  140. var p = yield (_crd && resLoader === void 0 ? (_reportPossibleCrUseOfresLoader({
  141. error: Error()
  142. }), resLoader) : resLoader).loadAsync(bundleName, path, Prefab);
  143. if (p) {
  144. resolve(instantiate(p));
  145. } else {
  146. console.error("\u540D\u4E3A\u3010" + path + "\u3011\u7684\u8D44\u6E90\u52A0\u8F7D\u5931\u8D25");
  147. resolve(null);
  148. }
  149. }));
  150. }
  151. /**
  152. * 添加节点动画
  153. * @param path 资源路径
  154. * @param node 目标节点
  155. * @param onlyOne 是否唯一
  156. * @param isDefaultClip 是否播放默认动画剪辑
  157. */
  158. static addNodeAnimation(path, node, onlyOne, isDefaultClip) {
  159. if (onlyOne === void 0) {
  160. onlyOne = true;
  161. }
  162. if (isDefaultClip === void 0) {
  163. isDefaultClip = false;
  164. }
  165. if (!node || !node.isValid) {
  166. return;
  167. }
  168. var anim = node.getComponent(Animation);
  169. if (anim == null) {
  170. anim = node.addComponent(Animation);
  171. }
  172. var clip = (_crd && resLoader === void 0 ? (_reportPossibleCrUseOfresLoader({
  173. error: Error()
  174. }), resLoader) : resLoader).get(path, AnimationClip);
  175. if (!clip) {
  176. return;
  177. }
  178. if (onlyOne && anim.getState(clip.name) && anim.getState(clip.name).isPlaying) {
  179. return;
  180. }
  181. if (isDefaultClip) {
  182. anim.defaultClip = clip;
  183. anim.play();
  184. return;
  185. } // 播放完成后恢复播放默认动画
  186. anim.once(Animation.EventType.FINISHED, () => {
  187. if (anim.defaultClip) {
  188. anim.play();
  189. }
  190. }, this);
  191. if (anim.getState(clip.name)) {
  192. anim.play(clip.name);
  193. return;
  194. }
  195. anim.createState(clip, clip.name);
  196. anim.play(clip.name);
  197. }
  198. });
  199. _cclegacy._RF.pop();
  200. _crd = false;
  201. }
  202. };
  203. });
  204. //# sourceMappingURL=4f359abc84c1824a526252b4797205556deb81d6.js.map