Library.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. let library = {
  2. //数组元素位置替换
  3. swapArray: function(arr, index1, index2) {
  4. arr[index1] = arr.splice(index2, 1, arr[index1])[0];
  5. return arr;
  6. },
  7. swapLeft : function(arr) {
  8. let element = arr.shift();
  9. arr.push(element);
  10. },
  11. //生成指定范围随机整数
  12. randomFromIntRange: function(min, max) {
  13. return Math.floor(Math.random() * (max - min)) + min;
  14. },
  15. happenRate: function(rate) {
  16. let result = this.randomFromIntRange(0,100);
  17. if(result<rate)
  18. {
  19. return true;
  20. }
  21. else
  22. {
  23. return false;
  24. }
  25. return;
  26. },
  27. openInWebview () {
  28. let ua = navigator.userAgent.toLowerCase()
  29. if (ua.match(/MicroMessenger/i) == 'micromessenger') { // 微信浏览器判断
  30. return false
  31. } else if (ua.match(/QQ/i) == 'qq') { // QQ浏览器判断
  32. return false
  33. } else if (ua.match(/WeiBo/i) == "weibo") {
  34. return false
  35. } else {
  36. if (ua.match(/Android/i) != null) {
  37. return ua.match(/browser/i) == null
  38. } else if (ua.match(/iPhone/i) != null) {
  39. return ua.match(/safari/i) == null
  40. } else {
  41. return (ua.match(/macintosh/i) == null && ua.match(/windows/i) == null)
  42. }
  43. }
  44. },
  45. indexOf (arr,item) {
  46. for (let i = 0; i < arr.length; i++) {
  47. if (arr[i] == item) return i;
  48. }
  49. return -1;
  50. },
  51. remove(arr, item) {
  52. let index = arr.indexOf(item);
  53. if (index > -1) {
  54. arr.splice(index, 1);
  55. }
  56. },
  57. setImageBase64(base64Url,callback){
  58. let img = new Image();
  59. img.src = base64Url;
  60. img.onload = function(){
  61. let texture = new cc.Texture2D();
  62. texture.initWithElement(img);
  63. texture.handleLoadedTexture();
  64. if (callback)
  65. callback(texture);
  66. }
  67. },
  68. /**
  69. * 压缩
  70. */
  71. compress(strNormalString) {
  72. alert("压缩前长度:" + strNormalString.length);
  73. var strCompressedString = "";
  74. var ht = new Array();
  75. for(i = 0; i < 128; i++) {
  76. ht[i] = i;
  77. }
  78. var used = 128;
  79. var intLeftOver = 0;
  80. var intOutputCode = 0;
  81. var pcode = 0;
  82. var ccode = 0;
  83. var k = 0;
  84. for(var i=0; i<strNormalString.length; i++) {
  85. ccode = strNormalString.charCodeAt(i);
  86. k = (pcode << 8) | ccode;
  87. if(ht[k] != null) {
  88. pcode = ht[k];
  89. } else {
  90. intLeftOver += 12;
  91. intOutputCode <<= 12;
  92. intOutputCode |= pcode;
  93. pcode = ccode;
  94. if(intLeftOver >= 16) {
  95. strCompressedString += String.fromCharCode( intOutputCode >> ( intLeftOver - 16 ) );
  96. intOutputCode &= (Math.pow(2, (intLeftOver - 16)) - 1);
  97. intLeftOver -= 16;
  98. }
  99. if(used < 4096) {
  100. used ++;
  101. ht[k] = used - 1;
  102. }
  103. }
  104. }
  105. if(pcode != 0) {
  106. intLeftOver += 12;
  107. intOutputCode <<= 12;
  108. intOutputCode |= pcode;
  109. }
  110. if(intLeftOver >= 16) {
  111. strCompressedString += String.fromCharCode( intOutputCode >> ( intLeftOver - 16 ) );
  112. intOutputCode &= (Math.pow(2,(intLeftOver - 16)) - 1);
  113. intLeftOver -= 16;
  114. }
  115. if( intLeftOver > 0) {
  116. intOutputCode <<= (16 - intLeftOver);
  117. strCompressedString += String.fromCharCode( intOutputCode );
  118. }
  119. alert("压缩后长度:" + strCompressedString.length);
  120. return strCompressedString;
  121. },
  122. /**
  123. * 解压缩
  124. */
  125. decompress(strCompressedString) {
  126. var strNormalString = "";
  127. var ht = new Array();
  128. for (i = 0; i < 128; i++) {
  129. ht[i] = String.fromCharCode(i);
  130. }
  131. var used = 128;
  132. var intLeftOver = 0;
  133. var intOutputCode = 0;
  134. var ccode = 0;
  135. var pcode = 0;
  136. var key = 0;
  137. for (var i = 0; i < strCompressedString.length; i++) {
  138. intLeftOver += 16;
  139. intOutputCode <<= 16;
  140. intOutputCode |= strCompressedString.charCodeAt(i);
  141. while (1) {
  142. if (intLeftOver >= 12) {
  143. ccode = intOutputCode >> (intLeftOver - 12);
  144. if (typeof (key = ht[ccode]) != "undefined") {
  145. strNormalString += key;
  146. if (used > 128) {
  147. ht[ht.length] = ht[pcode] + key.substr(0, 1);
  148. }
  149. pcode = ccode;
  150. } else {
  151. key = ht[pcode] + ht[pcode].substr(0, 1);
  152. strNormalString += key;
  153. ht[ht.length] = ht[pcode] + key.substr(0, 1);
  154. pcode = ht.length - 1;
  155. }
  156. used++;
  157. intLeftOver -= 12;
  158. intOutputCode &= (Math.pow(2, intLeftOver) - 1);
  159. } else {
  160. break;
  161. }
  162. }
  163. }
  164. return strNormalString;
  165. }
  166. };
  167. module.exports = library;