utils.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. window.utils = {
  2. //04月25日,单位改为万公里了
  3. StarDistnaces: [
  4. //"月球",
  5. 15210,
  6. //"火星",
  7. 22794,
  8. //"木星",
  9. 77833,
  10. //"土星",
  11. 142700,
  12. //"天王星",
  13. 287099,
  14. //"海王星",
  15. 450400,
  16. //"黑洞"
  17. 591352,
  18. //"飞出太阳系"
  19. 600000,
  20. //飞出银河系
  21. 24598080000000],
  22. //判断是手机
  23. isMobile: function (callback) {
  24. if (cc.sys.platform == cc.sys.MOBILE_BROWSER) {
  25. if (callback != null) {
  26. callback();
  27. }
  28. }
  29. },
  30. //判断是手机
  31. isWeb: function (callback) {
  32. if (cc.sys.platform == cc.sys.DESKTOP_BROWSER) {
  33. if (callback != null) {
  34. callback();
  35. }
  36. }
  37. },
  38. //加载网络图片
  39. loadHttpSpriteFrame: function (avatarUrl, sprite) {
  40. cc.loader.load({
  41. url: avatarUrl, type: 'png'
  42. }, (err, texture) => {
  43. if (err) console.error(err);
  44. sprite.spriteFrame = new cc.SpriteFrame(texture);
  45. });
  46. },
  47. //跳转到某个场景名字
  48. toLoadScene: function (SceneName, callback) {
  49. cc.director.loadScene(SceneName, callback);
  50. },
  51. //准备去某个场景
  52. redytoLoadScene: function (SceneName) {
  53. cc.director.preloadScene(SceneName);
  54. },
  55. //加载 resources 文件夹下面的 图片
  56. loadResSpriteFrame: function (src, callback) {
  57. cc.loader.loadRes(src, cc.SpriteFrame, function (err, texture) {
  58. if (callback != null) {
  59. callback(texture);
  60. }
  61. }.bind(this));
  62. },
  63. dragonBonesPlay: function (node, name, playTimes) {
  64. let armature = node.getComponent(dragonBones.ArmatureDisplay);
  65. armature.playAnimation(name, playTimes);
  66. },
  67. dragonBonesGet: function (node) {
  68. let armature = node.getComponent(dragonBones.ArmatureDisplay);
  69. // console.log("是啥",armature.getAnimationNames(armature.armatureName));
  70. return armature.getAnimationNames(armature.armatureName)
  71. },
  72. getShareData: function (callback) {
  73. //击打三拳的数据
  74. let everypowerdata = UserInfo.PlayerGameData.everypowerdata;
  75. //打击的力量
  76. // 力量
  77. let everypowers = [];
  78. // 准确度
  79. let types = [];
  80. // 拳速
  81. let speend = [];
  82. let missTimes = [];
  83. let hitTimes = [];
  84. for (var i = 0; i < everypowerdata.length; i++) {
  85. let tempdata = everypowerdata[i];
  86. //拳速
  87. speend.push(tempdata.datastrike.ballSpeed);
  88. everypowers.push(tempdata.everypower);
  89. console.log("流量值type", tempdata.type);
  90. types.push(tempdata.type);
  91. if (tempdata.type == 0) {
  92. missTimes.push(tempdata.type);
  93. } else {
  94. hitTimes.push(tempdata.type);
  95. }
  96. }
  97. // 流浪值
  98. let power = parseInt(UserInfo.PlayerGameData.power);
  99. let types_average = 0;
  100. for (var i = 0; i < types.length; i++) {
  101. types_average += types[i];
  102. }
  103. console.log("准确率", (types_average / types.length));
  104. console.log("流量值", power);
  105. //最大连击
  106. let maxCombo = 0;
  107. for (var i = 0; i < types.length; i++) {
  108. if (i == 0) {
  109. maxCombo++;
  110. } else {
  111. if (types[i - 1] == 1 && types[i] == 1) {
  112. maxCombo++;
  113. } else {
  114. maxCombo = 0;
  115. }
  116. }
  117. }
  118. let speend_average = 0;
  119. for (var i = 0; i < speend.length; i++) {
  120. speend_average += speend[i];
  121. }
  122. //最大拳速
  123. let speend_max = 0;
  124. let temp_speend = 0;
  125. for (var i = 0; i < speend.length; i++) {
  126. if (speend[i] > temp_speend) {
  127. temp_speend = speend[i];
  128. }
  129. }
  130. speend_max = temp_speend;
  131. let powers_max = 0;
  132. let temp_powers = 0;
  133. for (var i = 0; i < everypowers.length; i++) {
  134. if (everypowers[i] > temp_powers) {
  135. temp_powers = everypowers[i];
  136. }
  137. }
  138. powers_max = temp_powers;
  139. console.log("速度", (speend_average / speend.length));
  140. let everypowers_average = 0;
  141. for (var i = 0; i < everypowers.length; i++) {
  142. everypowers_average += everypowers[i];
  143. }
  144. console.log("力量", (everypowers_average / everypowers.length));
  145. var distance = this.SetDistance(UserInfo.PlayerGameData.currtag, power);
  146. let callbackdata = {
  147. //平均速度
  148. speend_average: Math.round(speend_average / speend.length),
  149. //平均力量
  150. everypowers_average: Math.round(everypowers_average / everypowers.length),
  151. //准确率
  152. types_average: parseInt((types_average / types.length)),
  153. //流浪值
  154. power: power,
  155. //给app 的 数据
  156. setResult: {
  157. //总打击拳数
  158. times: everypowerdata.length,
  159. // miss拳数
  160. missTimes: missTimes.length,
  161. // 命中率
  162. hitRate: parseInt((types_average / types.length)),
  163. // 命中拳数
  164. hitTimes: hitTimes.length,
  165. // 游戏总时长
  166. duration: (new Date().getTime() - GameData.gameStartTime),
  167. // 游戏开始时间
  168. requestTime: GameData.gameStartTime,
  169. // 分数
  170. score: power,
  171. // 最大力量
  172. maxPower: powers_max,
  173. // 是否赢得游戏
  174. winGame: 1,
  175. // 最大球速
  176. maxSpeed: speend_max,
  177. // 平均球速
  178. avgSpeed: Math.round(speend_average / speend.length),
  179. // 最大连击
  180. maxCombo: maxCombo,
  181. // 光年距离(先是死的)
  182. alternative: distance,
  183. // 扩展数据(不要给)
  184. // extraJson : ""
  185. // 卡路里 4.24添加
  186. calorie: Math.round(everypowers_average / everypowers.length) * 6,
  187. // int rankingType, 字段排名 0-score排名 1-alternative排名
  188. // int type 排名类型 1-好友 2-全国
  189. //便捷接口
  190. rankingType : 0,
  191. type : 2,
  192. }
  193. }
  194. if (callback != null) {
  195. callback(callbackdata);
  196. }
  197. },
  198. SetDistance: function (currtag, power) {
  199. var distance = 0;
  200. var distanceUnit = "万公里";
  201. var a = 0;
  202. //普通星球
  203. if (currtag >= 0 && currtag <= 6) {
  204. distance = this.StarDistnaces[currtag];
  205. }
  206. //太阳系
  207. else if (currtag == 99) {
  208. distance = this.StarDistnaces[7];
  209. }
  210. //银河系
  211. else if (currtag == 100) {
  212. distance = this.StarDistnaces[8];
  213. }
  214. a = power / 10000;
  215. a = Math.floor(a * 100) / 100;//保留两位小数点
  216. distance = distance + a;
  217. return distance;
  218. },
  219. }
  220. window.qiu = {}
  221. //以下为js缓动函数
  222. window.Tween = {
  223. Linear: function (t, b, c, d) {
  224. return c * t / d + b;
  225. },
  226. Quad: {
  227. easeIn: function (t, b, c, d) {
  228. return c * (t /= d) * t + b;
  229. },
  230. easeOut: function (t, b, c, d) {
  231. return -c * (t /= d) * (t - 2) + b;
  232. },
  233. easeInOut: function (t, b, c, d) {
  234. if ((t /= d / 2) < 1) return c / 2 * t * t + b;
  235. return -c / 2 * ((--t) * (t - 2) - 1) + b;
  236. }
  237. },
  238. Cubic: {
  239. easeIn: function (t, b, c, d) {
  240. return c * (t /= d) * t * t + b;
  241. },
  242. easeOut: function (t, b, c, d) {
  243. return c * ((t = t / d - 1) * t * t + 1) + b;
  244. },
  245. easeInOut: function (t, b, c, d) {
  246. if ((t /= d / 2) < 1) return c / 2 * t * t * t + b;
  247. return c / 2 * ((t -= 2) * t * t + 2) + b;
  248. }
  249. },
  250. Quart: {
  251. easeIn: function (t, b, c, d) {
  252. return c * (t /= d) * t * t * t + b;
  253. },
  254. easeOut: function (t, b, c, d) {
  255. return -c * ((t = t / d - 1) * t * t * t - 1) + b;
  256. },
  257. easeInOut: function (t, b, c, d) {
  258. if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b;
  259. return -c / 2 * ((t -= 2) * t * t * t - 2) + b;
  260. }
  261. },
  262. Quint: {
  263. easeIn: function (t, b, c, d) {
  264. return c * (t /= d) * t * t * t * t + b;
  265. },
  266. easeOut: function (t, b, c, d) {
  267. return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
  268. },
  269. easeInOut: function (t, b, c, d) {
  270. if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b;
  271. return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
  272. }
  273. },
  274. Sine: {
  275. easeIn: function (t, b, c, d) {
  276. return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
  277. },
  278. easeOut: function (t, b, c, d) {
  279. return c * Math.sin(t / d * (Math.PI / 2)) + b;
  280. },
  281. easeInOut: function (t, b, c, d) {
  282. return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
  283. }
  284. },
  285. Expo: {
  286. easeIn: function (t, b, c, d) {
  287. return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
  288. },
  289. easeOut: function (t, b, c, d) {
  290. return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;
  291. },
  292. easeInOut: function (t, b, c, d) {
  293. if (t == 0) return b;
  294. if (t == d) return b + c;
  295. if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
  296. return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;
  297. }
  298. },
  299. Circ: {
  300. easeIn: function (t, b, c, d) {
  301. return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
  302. },
  303. easeOut: function (t, b, c, d) {
  304. return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
  305. },
  306. easeInOut: function (t, b, c, d) {
  307. if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
  308. return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
  309. }
  310. },
  311. Elastic: {
  312. easeIn: function (t, b, c, d, a, p) {
  313. if (t == 0) return b;
  314. if ((t /= d) == 1) return b + c;
  315. if (!p) p = d * .3;
  316. if (!a || a < Math.abs(c)) {
  317. a = c;
  318. var s = p / 4;
  319. } else var s = p / (2 * Math.PI) * Math.asin(c / a);
  320. return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
  321. },
  322. easeOut: function (t, b, c, d, a, p) {
  323. if (t == 0) return b;
  324. if ((t /= d) == 1) return b + c;
  325. if (!p) p = d * .3;
  326. if (!a || a < Math.abs(c)) {
  327. a = c;
  328. var s = p / 4;
  329. } else var s = p / (2 * Math.PI) * Math.asin(c / a);
  330. return (a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b);
  331. },
  332. easeInOut: function (t, b, c, d, a, p) {
  333. if (t == 0) return b;
  334. if ((t /= d / 2) == 2) return b + c;
  335. if (!p) p = d * (.3 * 1.5);
  336. if (!a || a < Math.abs(c)) {
  337. a = c;
  338. var s = p / 4;
  339. } else var s = p / (2 * Math.PI) * Math.asin(c / a);
  340. if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
  341. return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;
  342. }
  343. },
  344. Back: {
  345. easeIn: function (t, b, c, d, s) {
  346. if (s == undefined) s = 1.70158;
  347. return c * (t /= d) * t * ((s + 1) * t - s) + b;
  348. },
  349. easeOut: function (t, b, c, d, s) {
  350. if (s == undefined) s = 1.70158;
  351. return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
  352. },
  353. easeInOut: function (t, b, c, d, s) {
  354. if (s == undefined) s = 1.70158;
  355. if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
  356. return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
  357. }
  358. },
  359. Bounce: {
  360. easeIn: function (t, b, c, d) {
  361. return c - Tween.Bounce.easeOut(d - t, 0, c, d) + b;
  362. },
  363. easeOut: function (t, b, c, d) {
  364. if ((t /= d) < (1 / 2.75)) {
  365. return c * (7.5625 * t * t) + b;
  366. } else if (t < (2 / 2.75)) {
  367. return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
  368. } else if (t < (2.5 / 2.75)) {
  369. return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
  370. } else {
  371. return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
  372. }
  373. },
  374. easeInOut: function (t, b, c, d) {
  375. if (t < d / 2) return Tween.Bounce.easeIn(t * 2, 0, c, d) * .5 + b;
  376. else return Tween.Bounce.easeOut(t * 2 - d, 0, c, d) * .5 + c * .5 + b;
  377. }
  378. }
  379. }