main.js 6.4 KB

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