main.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. (function(){
  2. if(typeof window.jsb==='object'){
  3. var hotUpdateSearchPaths=localStorage.getItem('HotUpdateSearchPaths');
  4. if(hotUpdateSearchPaths){
  5. var paths=JSON.parse(hotUpdateSearchPaths);
  6. jsb.fileUtils.setSearchPaths(paths);
  7. var fileList=[];
  8. var storagePath=paths[0]||'';
  9. var tempPath=storagePath+'_temp/';
  10. var baseOffset=tempPath.length;
  11. if(jsb.fileUtils.isDirectoryExist(tempPath)&&!jsb.fileUtils.isFileExist(tempPath+'project.manifest.temp')){
  12. jsb.fileUtils.listFilesRecursively(tempPath,fileList);
  13. fileList.forEach(srcPath=>{
  14. var relativePath=srcPath.substr(baseOffset);
  15. var dstPath=storagePath+relativePath;
  16. if(srcPath[srcPath.length]=='/'){
  17. cc.fileUtils.createDirectory(dstPath)
  18. }
  19. else{
  20. if(cc.fileUtils.isFileExist(dstPath)){
  21. cc.fileUtils.removeFile(dstPath)
  22. }
  23. cc.fileUtils.renameFile(srcPath,dstPath);
  24. }
  25. })
  26. cc.fileUtils.removeDirectory(tempPath);
  27. }
  28. }
  29. }
  30. })();
  31. window.boot=function(){
  32. var settings = window._CCSettings;
  33. window._CCSettings = undefined;
  34. if ( !settings.debug ) {
  35. var uuids = settings.uuids;
  36. var rawAssets = settings.rawAssets;
  37. var assetTypes = settings.assetTypes;
  38. var realRawAssets = settings.rawAssets = {};
  39. for (var mount in rawAssets) {
  40. var entries = rawAssets[mount];
  41. var realEntries = realRawAssets[mount] = {};
  42. for (var id in entries) {
  43. var entry = entries[id];
  44. var type = entry[1];
  45. // retrieve minified raw asset
  46. if (typeof type === 'number') {
  47. entry[1] = assetTypes[type];
  48. }
  49. // retrieve uuid
  50. realEntries[uuids[id] || id] = entry;
  51. }
  52. }
  53. var scenes = settings.scenes;
  54. for (var i = 0; i < scenes.length; ++i) {
  55. var scene = scenes[i];
  56. if (typeof scene.uuid === 'number') {
  57. scene.uuid = uuids[scene.uuid];
  58. }
  59. }
  60. var packedAssets = settings.packedAssets;
  61. for (var packId in packedAssets) {
  62. var packedIds = packedAssets[packId];
  63. for (var j = 0; j < packedIds.length; ++j) {
  64. if (typeof packedIds[j] === 'number') {
  65. packedIds[j] = uuids[packedIds[j]];
  66. }
  67. }
  68. }
  69. var subpackages = settings.subpackages;
  70. for (var subId in subpackages) {
  71. var uuidArray = subpackages[subId].uuids;
  72. if (uuidArray) {
  73. for (var k = 0, l = uuidArray.length; k < l; k++) {
  74. if (typeof uuidArray[k] === 'number') {
  75. uuidArray[k] = uuids[uuidArray[k]];
  76. }
  77. }
  78. }
  79. }
  80. }
  81. function setLoadingDisplay () {
  82. // Loading splash scene
  83. var splash = document.getElementById('splash');
  84. var progressBar = splash.querySelector('.progress-bar span');
  85. cc.loader.onProgress = function (completedCount, totalCount, item) {
  86. var percent = 100 * completedCount / totalCount;
  87. if (progressBar) {
  88. progressBar.style.width = percent.toFixed(2) + '%';
  89. }
  90. };
  91. splash.style.display = 'block';
  92. progressBar.style.width = '0%';
  93. cc.director.once(cc.Director.EVENT_AFTER_SCENE_LAUNCH, function () {
  94. splash.style.display = 'none';
  95. });
  96. }
  97. var onStart = function () {
  98. cc.loader.downloader._subpackages = settings.subpackages;
  99. cc.view.enableRetina(true);
  100. cc.view.resizeWithBrowserSize(true);
  101. if (cc.sys.isBrowser) {
  102. setLoadingDisplay();
  103. }
  104. if (cc.sys.isMobile) {
  105. if (settings.orientation === 'landscape') {
  106. cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
  107. }
  108. else if (settings.orientation === 'portrait') {
  109. cc.view.setOrientation(cc.macro.ORIENTATION_PORTRAIT);
  110. }
  111. cc.view.enableAutoFullScreen([
  112. cc.sys.BROWSER_TYPE_BAIDU,
  113. cc.sys.BROWSER_TYPE_BAIDU_APP,
  114. cc.sys.BROWSER_TYPE_WECHAT,
  115. cc.sys.BROWSER_TYPE_MOBILE_QQ,
  116. cc.sys.BROWSER_TYPE_MIUI,
  117. ].indexOf(cc.sys.browserType) < 0);
  118. }
  119. // Limit downloading max concurrent task to 2,
  120. // more tasks simultaneously may cause performance draw back on some android system / browsers.
  121. // You can adjust the number based on your own test result, you have to set it before any loading process to take effect.
  122. if (cc.sys.isBrowser && cc.sys.os === cc.sys.OS_ANDROID) {
  123. cc.macro.DOWNLOAD_MAX_CONCURRENT = 2;
  124. }
  125. function loadScene(launchScene) {
  126. cc.director.loadScene(launchScene,
  127. function (err) {
  128. if (!err) {
  129. if (cc.sys.isBrowser) {
  130. // show canvas
  131. var canvas = document.getElementById('GameCanvas');
  132. canvas.style.visibility = '';
  133. var div = document.getElementById('GameDiv');
  134. if (div) {
  135. div.style.backgroundImage = '';
  136. }
  137. }
  138. cc.loader.onProgress = null;
  139. console.log('Success to load scene: ' + launchScene);
  140. }
  141. else if (CC_BUILD) {
  142. setTimeout(function () {
  143. loadScene(launchScene);
  144. }, 1000);
  145. }
  146. }
  147. );
  148. }
  149. var launchScene = settings.launchScene;
  150. // load scene
  151. loadScene(launchScene);
  152. };
  153. // jsList
  154. var jsList = settings.jsList;
  155. var bundledScript = settings.debug ? 'src/project.dev.js' : 'src/project.js';
  156. if (jsList) {
  157. jsList = jsList.map(function (x) {
  158. return 'src/' + x;
  159. });
  160. jsList.push(bundledScript);
  161. }
  162. else {
  163. jsList = [bundledScript];
  164. }
  165. var option = {
  166. id: 'GameCanvas',
  167. scenes: settings.scenes,
  168. debugMode: settings.debug ? cc.debug.DebugMode.INFO : cc.debug.DebugMode.ERROR,
  169. showFPS: settings.debug,
  170. frameRate: 60,
  171. jsList: jsList,
  172. groupList: settings.groupList,
  173. collisionMatrix: settings.collisionMatrix,
  174. };
  175. // init assets
  176. cc.AssetLibrary.init({
  177. libraryPath: 'res/import',
  178. rawAssetsBase: 'res/raw-',
  179. rawAssets: settings.rawAssets,
  180. packedAssets: settings.packedAssets,
  181. md5AssetsMap: settings.md5AssetsMap,
  182. subpackages: settings.subpackages
  183. });
  184. cc.game.run(option, onStart);
  185. };
  186. if (window.jsb) {
  187. var isRuntime = (typeof loadRuntime === 'function');
  188. if (isRuntime) {
  189. require('src/settings.js');
  190. require('src/cocos2d-runtime.js');
  191. if (CC_PHYSICS_BUILTIN || CC_PHYSICS_CANNON) {
  192. require('src/physics.js');
  193. }
  194. require('jsb-adapter/engine/index.js');
  195. }
  196. else {
  197. require('src/settings.js');
  198. require('src/cocos2d-jsb.js');
  199. if (CC_PHYSICS_BUILTIN || CC_PHYSICS_CANNON) {
  200. require('src/physics.js');
  201. }
  202. require('jsb-adapter/jsb-engine.js');
  203. }
  204. cc.macro.CLEANUP_IMAGE_CACHE = true;
  205. window.boot();
  206. }