main.js 6.7 KB

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