d6ec18d6ea05ecc84f5191004e3fcc26f59079b4.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498
  1. System.register(["cc"], function (_export, _context) {
  2. "use strict";
  3. var _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, size, view, UITransform, screen, ImageAsset, SpriteFrame, Texture2D, sys, assetManager, ch_util, _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. return {
  7. setters: [function (_cc) {
  8. _cclegacy = _cc.cclegacy;
  9. __checkObsolete__ = _cc.__checkObsolete__;
  10. __checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__;
  11. size = _cc.size;
  12. view = _cc.view;
  13. UITransform = _cc.UITransform;
  14. screen = _cc.screen;
  15. ImageAsset = _cc.ImageAsset;
  16. SpriteFrame = _cc.SpriteFrame;
  17. Texture2D = _cc.Texture2D;
  18. sys = _cc.sys;
  19. assetManager = _cc.assetManager;
  20. }],
  21. execute: function () {
  22. _crd = true;
  23. _cclegacy._RF.push({}, "1badftMxAdA7p5/bxrvSF8o", "ch_util", undefined);
  24. /**工具*/
  25. __checkObsolete__(['size', 'view', 'Node', 'UITransform', 'screen', 'ImageAsset', 'SpriteFrame', 'Texture2D', 'sys', 'assetManager']);
  26. ch_util = class ch_util {
  27. constructor() {
  28. this._k = 1000;
  29. this._k_sizes_en = ['', 'K', 'M', 'G', 'T', 'P', 'E'];
  30. this._k_sizes_cn = ['', '千', '百万', '十亿', '万亿', '拍(千万亿)', '艾(十亿亿)'];
  31. this._w = 10000;
  32. this._w_sizes_en = ['', 'W', 'M', 'B', 'T'];
  33. this._w_sizes_cn = ['', '万', '亿', '万亿'];
  34. this._url_data = null;
  35. }
  36. static getInstance() {
  37. if (!this._instance) this._instance = new ch_util();
  38. return this._instance;
  39. }
  40. /**
  41. * 随机数 (包含min,不包含max)
  42. * @param min
  43. * @param max
  44. * @param isInt
  45. * @return {*}
  46. */
  47. getRandom(min, max) {
  48. if (min === void 0) {
  49. min = 0;
  50. }
  51. if (max === void 0) {
  52. max = 1;
  53. }
  54. if (min == null) min = 0;
  55. if (max == null) max = 1;
  56. if (min === max) return min;
  57. return min + Math.random() * (max - min);
  58. }
  59. /**
  60. * 随机整数-不包含最大值
  61. * @param min
  62. * @param max
  63. * @return {*}
  64. */
  65. getRandomInt(min, max) {
  66. min = Math.ceil(min);
  67. max = Math.ceil(max);
  68. return Math.floor(Math.random() * (max - min)) + min;
  69. }
  70. /** 生成随机整数 -1 或 1*/
  71. getRandomDir() {
  72. return Math.floor(Math.random() * 2) === 0 ? -1 : 1;
  73. }
  74. /**
  75. * 在指定数组中随机取出N个不重复的数据
  76. * @param resArr
  77. * @param ranNum
  78. * @returns {Array}
  79. */
  80. getRandomDiffValueFromArr(resArr, ranNum) {
  81. var arr = new Array();
  82. var result = new Array();
  83. if (!resArr || resArr.length <= 0 || ranNum <= 0) {
  84. return result;
  85. }
  86. for (var i = 0; i < resArr.length; i++) {
  87. arr.push(resArr[i]);
  88. }
  89. if (ranNum >= arr.length) return arr;
  90. ranNum = Math.min(ranNum, arr.length - 1);
  91. for (var _i = 0; _i < ranNum; _i++) {
  92. var ran = this.getRandomInt(0, arr.length - 1);
  93. result.push(arr.splice(ran, 1)[0]);
  94. }
  95. return result;
  96. }
  97. /**
  98. * 取小数位
  99. * @param decimal 小数
  100. * @param places 位数
  101. * @return {number}
  102. */
  103. numberToDecimal(decimal, places) {
  104. var round = Math.pow(10, places);
  105. return Math.round(decimal * round) / round;
  106. }
  107. parse(text, reciver) {
  108. try {
  109. return JSON.parse(text, reciver);
  110. } catch (error) {
  111. //ch_log.error(error);
  112. return null;
  113. }
  114. }
  115. stringify(value, replacer, space) {
  116. try {
  117. return JSON.stringify(value, replacer, space);
  118. } catch (error) {
  119. return null;
  120. }
  121. }
  122. /**
  123. * 判断字符是否为双字节字符(如中文字符)
  124. * @param string 原字符串
  125. */
  126. str_isDoubleWord(string) {
  127. return /[^\x00-\xff]/.test(string);
  128. }
  129. /**
  130. * 是否为空
  131. * @param str
  132. */
  133. str_isEmpty(str) {
  134. if (str == null || str == undefined || str.length == 0) {
  135. return true;
  136. }
  137. return false;
  138. }
  139. /**
  140. * 转美式计数字符串
  141. * @param value 数字
  142. * @example
  143. * 123456789 = 123,456,789
  144. */
  145. numberTotPermil(value) {
  146. return value.toLocaleString();
  147. }
  148. /**
  149. * 通用单位转换方法
  150. */
  151. convertNumber(value, base, sizes, fixed) {
  152. if (value < base) return value.toString();
  153. var i = Math.floor(Math.log(value) / Math.log(base));
  154. var r = value / Math.pow(base, i);
  155. if (i >= sizes.length) return value.toString();
  156. return "" + r.toFixed(fixed) + sizes[i];
  157. }
  158. /**
  159. * 转单位计数(默认英文)
  160. * @param value 数字
  161. * @param fixed 保留小数位数
  162. * @param isEn 是否英文
  163. * @example
  164. * 12345 = 12.35K
  165. */
  166. numberToThousand(value, fixed, isEn) {
  167. if (fixed === void 0) {
  168. fixed = 2;
  169. }
  170. if (isEn === void 0) {
  171. isEn = true;
  172. }
  173. var sizes = isEn ? this._k_sizes_en : this._k_sizes_cn;
  174. return this.convertNumber(value, this._k, sizes, fixed);
  175. }
  176. /**
  177. * 转单位计数(默认中文)
  178. * @param value 数字
  179. * @param fixed 保留小数位数
  180. * @param isEn 是否英文
  181. * @example
  182. * 12345 = 1.23万
  183. */
  184. numberToTenThousand(value, fixed, isEn) {
  185. if (fixed === void 0) {
  186. fixed = 2;
  187. }
  188. if (isEn === void 0) {
  189. isEn = false;
  190. }
  191. var sizes = isEn ? this._w_sizes_en : this._w_sizes_cn;
  192. return this.convertNumber(value, this._w, sizes, fixed);
  193. }
  194. /**获取一个唯一标识的字符串 */
  195. guid() {
  196. var guid = Math.random().toString(36).substring(2);
  197. return guid;
  198. }
  199. /**排序一个json Object*/
  200. obj_sort(obj) {
  201. var sorted_keys = Object.keys(obj).sort();
  202. var new_obj = {};
  203. for (var i = 0; i < sorted_keys.length; i++) {
  204. var _key = sorted_keys[i];
  205. var _value = obj[_key];
  206. var t = this.obj_get_value_type(_value);
  207. new_obj[_key] = t == 'object' ? this.obj_sort(_value) : _value;
  208. }
  209. return new_obj;
  210. }
  211. /**获取一个josn值的类型*/
  212. obj_get_value_type(value) {
  213. var type;
  214. if (value === null) {
  215. type = 'null';
  216. } else {
  217. type = typeof value;
  218. } // 如果是对象或数组,还可以进一步判断
  219. if (type === 'object') {
  220. if (Array.isArray(value)) {
  221. type = 'array';
  222. } //else if (value instanceof Date) { type = 'date'; }
  223. }
  224. return type;
  225. }
  226. /**
  227. * 判断指定的值是否为对象
  228. * @param value 值
  229. */
  230. valueIsObject(value) {
  231. return Object.prototype.toString.call(value) === '[object Object]';
  232. }
  233. /**
  234. * 深拷贝
  235. * @param target 目标
  236. */
  237. /** 克隆对象 */
  238. obj_clone(target_, record_set) {
  239. if (record_set === void 0) {
  240. record_set = new Set();
  241. }
  242. var result;
  243. switch (typeof target_) {
  244. case "object":
  245. {
  246. // 数组:遍历拷贝
  247. if (Array.isArray(target_)) {
  248. if (record_set.has(target_)) {
  249. return target_;
  250. }
  251. record_set.add(target_);
  252. result = [];
  253. for (var k_n = 0; k_n < target_.length; ++k_n) {
  254. // 递归克隆数组中的每一项
  255. result.push(this.obj_clone(target_[k_n], record_set));
  256. }
  257. } // null:直接赋值
  258. else if (target_ === null) {
  259. result = null;
  260. } // RegExp:直接赋值
  261. else if (target_.constructor === RegExp) {
  262. result = target_;
  263. } // 普通对象:循环递归赋值对象的所有值
  264. else {
  265. if (record_set.has(target_)) {
  266. return target_;
  267. }
  268. record_set.add(target_);
  269. result = {};
  270. for (var k_s in target_) {
  271. result[k_s] = this.obj_clone(target_[k_s], record_set);
  272. }
  273. }
  274. break;
  275. }
  276. case "function":
  277. {
  278. result = target_.bind({});
  279. break;
  280. }
  281. default:
  282. {
  283. result = target_;
  284. }
  285. }
  286. return result;
  287. }
  288. /**
  289. * 拷贝对象
  290. * @param target 目标
  291. */
  292. copy(target) {
  293. return this.parse(this.stringify(target));
  294. } //请求相关--------------------------------------------
  295. getReqId() {
  296. return Date.now() + "_" + Math.ceil(1e3 * Math.random());
  297. }
  298. /**获取链接中传入的某个值*/
  299. getUrlData(key) {
  300. if (!this._url_data) {
  301. this._url_data = this.parseUrl();
  302. }
  303. var value = this._url_data[key];
  304. if (value === undefined) return null;
  305. if (typeof value === 'string') {
  306. var numberValue = parseFloat(value);
  307. if (!isNaN(numberValue)) return numberValue;
  308. return value;
  309. }
  310. return null;
  311. }
  312. parseUrl() {
  313. if (!sys.isBrowser || typeof window !== "object" || !window.document) return {};
  314. var url = window.document.location.href;
  315. var queryString = url.split("?")[1];
  316. if (!queryString) return {};
  317. return queryString.split("&").reduce((acc, param) => {
  318. var [key, value] = param.split("=");
  319. if (key) acc[decodeURIComponent(key)] = value ? decodeURIComponent(value) : '';
  320. return acc;
  321. }, {});
  322. }
  323. /**获到node的坐标和范围用于平台在对应位置创建按纽*/
  324. getBtnOp(btnNode) {
  325. var btnNodeUiTransform = btnNode.getComponent(UITransform);
  326. var btnSize = size(btnNodeUiTransform.width + 0, btnNodeUiTransform.height + 0); //let frameWidth = screen.windowSize.width / screen.devicePixelRatio
  327. var frameHeight = screen.windowSize.height / screen.devicePixelRatio; //const winSize = screen.windowSize;
  328. //const designSize = view.getDesignResolutionSize();
  329. //console.log('designSize', designSize);
  330. //console.log('winSize:', winSize);
  331. //console.log('frameSize:', frameWidth,frameHeight);
  332. //适配不同机型来创建微信授权按钮
  333. var rect = btnNodeUiTransform.getBoundingBoxToWorld();
  334. var ratio = screen.devicePixelRatio;
  335. var scale = view.getScaleX();
  336. var factor = scale / ratio;
  337. var offsetX = 0;
  338. var offsetY = 0;
  339. var top = frameHeight - (rect.y + rect.height) * factor - offsetY;
  340. var left = rect.x * factor + offsetX;
  341. var width = btnSize.width * factor;
  342. var height = btnSize.height * factor;
  343. return {
  344. left: left,
  345. top: top,
  346. width: width,
  347. height: height
  348. };
  349. }
  350. /**远程加载图片*/
  351. loadImage(url) {
  352. var _this = this;
  353. return _asyncToGenerator(function* () {
  354. if (chsdk.get_pf() == chsdk.pf.web) {
  355. return yield _this.loadRemoteSprite(url);
  356. } else {
  357. var idata = yield chsdk.loadImage(url);
  358. return _this.getSpriteFrame(idata);
  359. }
  360. })();
  361. }
  362. /**cocos加载远程图片*/
  363. loadRemoteSprite(remoteUrl, ext) {
  364. if (ext === void 0) {
  365. ext = '.png';
  366. }
  367. return new Promise(resolve => {
  368. assetManager.loadRemote(remoteUrl, {
  369. ext: ext
  370. }, function (err, imageAsset) {
  371. var spriteFrame = new SpriteFrame();
  372. var texture = new Texture2D();
  373. texture.image = imageAsset;
  374. spriteFrame.texture = texture;
  375. resolve(spriteFrame);
  376. });
  377. });
  378. }
  379. /**远程加载的图片数据转成spriteFrame*/
  380. getSpriteFrame(img) {
  381. if (!img) return null;
  382. try {
  383. var spriteFrame = new SpriteFrame();
  384. var texture = new Texture2D();
  385. texture.image = img instanceof ImageAsset ? img : new ImageAsset(img);
  386. spriteFrame.texture = texture;
  387. return spriteFrame;
  388. } catch (error) {
  389. //ch_log.warn(error);
  390. return null;
  391. }
  392. }
  393. };
  394. ch_util._instance = void 0;
  395. _export("default", ch_util.getInstance());
  396. _cclegacy._RF.pop();
  397. _crd = false;
  398. }
  399. };
  400. });
  401. //# sourceMappingURL=d6ec18d6ea05ecc84f5191004e3fcc26f59079b4.js.map