Library.js 5.3 KB

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