jsloader.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. /****************************************************************************
  2. Copyright (c) 2010-2012 cocos2d-x.org
  3. Copyright (c) 2008-2010 Ricardo Quesada
  4. Copyright (c) 2011 Zynga Inc.
  5. http://www.cocos2d-x.org
  6. Permission is hereby granted, free of charge, to any person obtaining a copy
  7. of this software and associated documentation files (the "Software"), to deal
  8. in the Software without restriction, including without limitation the rights
  9. to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10. copies of the Software, and to permit persons to whom the Software is
  11. furnished to do so, subject to the following conditions:
  12. The above copyright notice and this permission notice shall be included in
  13. all copies or substantial portions of the Software.
  14. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  19. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  20. THE SOFTWARE.
  21. ****************************************************************************/
  22. (function () {
  23. var engine = [
  24. // Core
  25. 'CCClass.js',
  26. 'CCGeometry.js',
  27. 'Sys.js',
  28. 'CCConfig.js',
  29. 'miniFramework.js',
  30. 'CCCommon.js',
  31. 'CCMacro.js',
  32. 'CCFileUtils.js',
  33. 'CCTypes.js',
  34. 'CCEGLView.js',
  35. 'CCScreen.js',
  36. 'CCVisibleRect.js',
  37. 'CCAffineTransform.js',
  38. 'CCPointExtension.js',
  39. 'CCVertex.js',
  40. 'TransformUtils.js',
  41. 'CCNode.js',
  42. 'CCAtlasNode.js',
  43. 'CCTexture2D.js',
  44. 'CCTextureCache.js',
  45. 'CCTextureAtlas.js',
  46. 'CCScene.js',
  47. 'CCLayer.js',
  48. 'CCSprite.js',
  49. 'CCAnimation.js',
  50. 'CCAnimationCache.js',
  51. 'CCSpriteFrame.js',
  52. 'CCSpriteFrameCache.js',
  53. 'CCSpriteBatchNode.js',
  54. 'CCConfiguration.js',
  55. 'CCDirector.js',
  56. 'CCCamera.js',
  57. 'CCScheduler.js',
  58. 'CCLoader.js',
  59. 'CCDrawingPrimitives.js',
  60. 'CCApplication.js',
  61. 'CCSAXParser.js',
  62. 'AppControl.js',
  63. 'CCLabelTTF.js',
  64. 'CCActionManager.js',
  65. 'utility.js',
  66. 'vec2.js',
  67. 'vec3.js',
  68. 'vec4.js',
  69. 'ray2.js',
  70. 'mat3.js',
  71. 'mat4.js',
  72. 'plane.js',
  73. 'quaternion.js',
  74. 'aabb.js',
  75. 'mat4stack.js',
  76. 'matrix.js',
  77. 'CCShaders.js',
  78. 'CCShaderCache.js',
  79. 'CCGLProgram.js',
  80. 'CCGLStateCache.js',
  81. 'CCRenderTexture.js',
  82. 'CCMotionStreak.js',
  83. 'CCClippingNode.js',
  84. 'CCGrid.js',
  85. 'CCGrabber.js',
  86. 'CCDrawNode.js',
  87. 'CCAction.js',
  88. 'CCActionInterval.js',
  89. 'CCActionInstant.js',
  90. 'CCActionCamera.js',
  91. 'CCActionEase.js',
  92. 'CCActionCatmullRom.js',
  93. 'CCActionTween.js',
  94. 'CCActionGrid.js',
  95. 'CCActionGrid3D.js',
  96. 'CCActionTiledGrid.js',
  97. 'CCActionPageTurn3D.js',
  98. 'CCProgressTimer.js',
  99. 'CCActionProgressTimer.js',
  100. 'CCTransition.js',
  101. 'CCTransitionProgress.js',
  102. 'CCTransitionPageTurn.js',
  103. 'CCLabelAtlas.js',
  104. 'CCLabelBMFont.js',
  105. 'ZipUtils.js',
  106. 'base64.js',
  107. 'gzip.js',
  108. 'zlib.min.js',
  109. 'CCPNGReader.js',
  110. 'CCTIFFReader.js',
  111. 'CCParticleSystem.js',
  112. 'CCParticleExamples.js',
  113. 'CCParticleBatchNode.js',
  114. 'CCTouchDelegateProtocol.js',
  115. 'CCTouchHandler.js',
  116. 'CCTouchDispatcher.js',
  117. 'CCMouseDispatcher.js',
  118. 'CCKeyboardDelegate.js',
  119. 'CCKeyboardDispatcher.js',
  120. 'CCAccelerometer.js',
  121. 'CCIMEDispatcher.js',
  122. 'CCTextFieldTTF.js',
  123. 'CCMenuItem.js',
  124. 'CCMenu.js',
  125. 'CCTGAlib.js',
  126. 'CCTMXTiledMap.js',
  127. 'CCTMXXMLParser.js',
  128. 'CCTMXObjectGroup.js',
  129. 'CCTMXLayer.js',
  130. 'CCParallaxNode.js',
  131. 'SimpleAudioEngine.js',
  132. // useless
  133. 'CCUserDefault.js',
  134. 'CCImage.js'
  135. ];
  136. var d = document;
  137. var c = d["ccConfig"];
  138. if (c.loadExtension != null && c.loadExtension == true) {
  139. engine = engine.concat([
  140. '../extensions/GUI/CCControlExtension/CCControl.js',
  141. '../extensions/GUI/CCControlExtension/CCControlButton.js',
  142. '../extensions/GUI/CCControlExtension/CCControlUtils.js',
  143. '../extensions/GUI/CCControlExtension/CCInvocation.js',
  144. '../extensions/GUI/CCControlExtension/CCScale9Sprite.js',
  145. '../extensions/GUI/CCControlExtension/CCMenuPassive.js',
  146. '../extensions/GUI/CCControlExtension/CCControlSaturationBrightnessPicker.js',
  147. '../extensions/GUI/CCControlExtension/CCControlHuePicker.js',
  148. '../extensions/GUI/CCControlExtension/CCControlColourPicker.js',
  149. '../extensions/GUI/CCControlExtension/CCControlSlider.js',
  150. '../extensions/GUI/CCControlExtension/CCControlSwitch.js',
  151. '../extensions/GUI/CCControlExtension/CCControlStepper.js',
  152. '../extensions/GUI/CCControlExtension/CCControlPotentiometer.js',
  153. '../extensions/GUI/CCScrollView/CCScrollView.js',
  154. '../extensions/GUI/CCScrollView/CCSorting.js',
  155. '../extensions/GUI/CCScrollView/CCTableView.js',
  156. '../extensions/CCBReader/CCNodeLoader.js',
  157. '../extensions/CCBReader/CCBReaderUtil.js',
  158. '../extensions/CCBReader/CCControlLoader.js',
  159. '../extensions/CCBReader/CCSpriteLoader.js',
  160. '../extensions/CCBReader/CCNodeLoaderLibrary.js',
  161. '../extensions/CCBReader/CCBReader.js',
  162. '../extensions/CCBReader/CCBValue.js',
  163. '../extensions/CCBReader/CCBKeyframe.js',
  164. '../extensions/CCBReader/CCBSequence.js',
  165. '../extensions/CCBReader/CCBRelativePositioning.js',
  166. '../extensions/CCBReader/CCBAnimationManager.js',
  167. '../extensions/CCEditBox/CCdomNode.js',
  168. '../extensions/CCEditBox/CCEditBox.js',
  169. '../extensions/CocoStudio/Components/CCComponent.js',
  170. '../extensions/CocoStudio/Components/CCComponentContainer.js',
  171. '../extensions/CocoStudio/CocoStudio.js',
  172. // CocoStudio Armature
  173. '../extensions/CocoStudio/Armature/utils/CCArmatureDefine.js',
  174. '../extensions/CocoStudio/Armature/utils/CCDataReaderHelper.js',
  175. '../extensions/CocoStudio/Armature/utils/CCSpriteFrameCacheHelper.js',
  176. '../extensions/CocoStudio/Armature/utils/CCTransformHelp.js',
  177. '../extensions/CocoStudio/Armature/utils/CCTweenFunction.js',
  178. '../extensions/CocoStudio/Armature/utils/CCUtilMath.js',
  179. '../extensions/CocoStudio/Armature/utils/CCArmatureDataManager.js',
  180. '../extensions/CocoStudio/Armature/datas/CCDatas.js',
  181. '../extensions/CocoStudio/Armature/display/CCDecorativeDisplay.js',
  182. '../extensions/CocoStudio/Armature/display/CCDisplayFactory.js',
  183. '../extensions/CocoStudio/Armature/display/CCDisplayManager.js',
  184. '../extensions/CocoStudio/Armature/display/CCSkin.js',
  185. '../extensions/CocoStudio/Armature/animation/CCProcessBase.js',
  186. '../extensions/CocoStudio/Armature/animation/CCArmatureAnimation.js',
  187. '../extensions/CocoStudio/Armature/animation/CCTween.js',
  188. '../extensions/CocoStudio/Armature/physics/CCColliderDetector.js',
  189. '../extensions/CocoStudio/Armature/CCArmature.js',
  190. '../extensions/CocoStudio/Armature/CCBone.js',
  191. // CocoStudio Action
  192. '../extensions/CocoStudio/Action/CCActionFrame.js',
  193. '../extensions/CocoStudio/Action/CCActionManager.js',
  194. '../extensions/CocoStudio/Action/CCActionNode.js',
  195. '../extensions/CocoStudio/Action/CCActionObject.js',
  196. // CocoStudio Components
  197. '../extensions/CocoStudio/Components/CCComAttribute.js',
  198. '../extensions/CocoStudio/Components/CCComAudio.js',
  199. '../extensions/CocoStudio/Components/CCComController.js',
  200. '../extensions/CocoStudio/Components/CCComRender.js',
  201. // CocoStudio Trigger
  202. '../extensions/CocoStudio/Trigger/ObjectFactory.js',
  203. '../extensions/CocoStudio/Trigger/TriggerBase.js',
  204. '../extensions/CocoStudio/Trigger/TriggerMng.js',
  205. '../extensions/CocoStudio/Trigger/TriggerObj.js',
  206. // CocoStudio GUI
  207. '../extensions/CocoStudio/GUI/BaseClasses/UIWidget.js',
  208. '../extensions/CocoStudio/GUI/Layouts/UILayout.js',
  209. '../extensions/CocoStudio/GUI/Layouts/UILayoutParameter.js',
  210. '../extensions/CocoStudio/GUI/Layouts/UILayoutDefine.js',
  211. '../extensions/CocoStudio/GUI/System/CocosGUI.js',
  212. '../extensions/CocoStudio/GUI/System/UIHelper.js',
  213. '../extensions/CocoStudio/GUI/System/UILayer.js',
  214. '../extensions/CocoStudio/GUI/UIWidgets/UIButton.js',
  215. '../extensions/CocoStudio/GUI/UIWidgets/UICheckBox.js',
  216. '../extensions/CocoStudio/GUI/UIWidgets/UIImageView.js',
  217. '../extensions/CocoStudio/GUI/UIWidgets/UILabel.js',
  218. '../extensions/CocoStudio/GUI/UIWidgets/UILabelAtlas.js',
  219. '../extensions/CocoStudio/GUI/UIWidgets/UILabelBMFont.js',
  220. '../extensions/CocoStudio/GUI/UIWidgets/UILoadingBar.js',
  221. '../extensions/CocoStudio/GUI/UIWidgets/UIRichText.js',
  222. '../extensions/CocoStudio/GUI/UIWidgets/UISlider.js',
  223. '../extensions/CocoStudio/GUI/UIWidgets/UISwitch.js',
  224. '../extensions/CocoStudio/GUI/UIWidgets/UITextField.js',
  225. '../extensions/CocoStudio/GUI/UIWidgets/Compatible/CompatibleClasses.js',
  226. '../extensions/CocoStudio/GUI/UIWidgets/ScrollWidget/UIScrollView.js',
  227. '../extensions/CocoStudio/GUI/UIWidgets/ScrollWidget/UIListView.js',
  228. '../extensions/CocoStudio/GUI/UIWidgets/ScrollWidget/UIPageView.js',
  229. '../extensions/CocoStudio/Reader/GUIReader.js',
  230. '../extensions/CocoStudio/Reader/SceneReader.js'
  231. ]);
  232. }
  233. if (c.loadPluginx != null && c.loadPluginx == true) {
  234. engine = engine.concat([
  235. //protocols
  236. '../extensions/PluginX/protocols/Config.js',
  237. '../extensions/PluginX/protocols/PluginUtils.js',
  238. '../extensions/PluginX/protocols/PluginProtocol.js',
  239. '../extensions/PluginX/protocols/ProtocolSocial.js',
  240. '../extensions/PluginX/protocols/ProtocolAds.js',
  241. '../extensions/PluginX/protocols/ProtocolAnalytics.js',
  242. //'../extensions/PluginX/protocols/ProtocolIAP.js',
  243. '../extensions/PluginX/protocols/PluginFactory.js',
  244. '../extensions/PluginX/protocols/PluginManager.js',
  245. //plugins
  246. '../extensions/PluginX/plugins/SocialWeibo.js',
  247. '../extensions/PluginX/plugins/SocialQQWeibo.js',
  248. '../extensions/PluginX/plugins/SocialQzone.js',
  249. '../extensions/PluginX/plugins/SocialTwitter.js',
  250. '../extensions/PluginX/plugins/SocialFacebook.js',
  251. //'../extensions/PluginX/plugins/AdsGoogle.js',
  252. '../extensions/PluginX/plugins/AnalyticsFlurry.js'
  253. ]);
  254. }
  255. if (!c.engineDir) {
  256. engine = [];
  257. }
  258. else {
  259. if(c.box2d || c.chipmunk){
  260. engine.push('physics_nodes/CCPhysicsSprite.js');
  261. engine.push('physics_nodes/CCPhysicsDebugNode.js');
  262. if (c.box2d === true)
  263. engine.push('../external/box2d/box2d.js');
  264. if (c.chipmunk === true)
  265. engine.push('../external/chipmunk/chipmunk.js');
  266. }
  267. engine.forEach(function (e, i) {
  268. engine[i] = c.engineDir + e;
  269. });
  270. }
  271. if (typeof c.box2d === "string") {
  272. engine.push(c.box2d);
  273. }
  274. if (typeof c.chipmunk === "string") {
  275. engine.push(c.chipmunk);
  276. }
  277. var loadJsImg = document.getElementById("cocos2d_loadJsImg");
  278. if(!loadJsImg){
  279. loadJsImg = document.createElement('img');
  280. loadJsImg.src = "data:image/gif;base64,R0lGODlhEAAQALMNAD8/P7+/vyoqKlVVVX9/fxUVFUBAQGBgYMDAwC8vL5CQkP///wAAAP///wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAAANACwAAAAAEAAQAAAEO5DJSau9OOvNex0IMnDIsiCkiW6g6BmKYlBFkhSUEgQKlQCARG6nEBwOgl+QApMdCIRD7YZ5RjlGpCUCACH5BAUAAA0ALAAAAgAOAA4AAAQ6kLGB0JA4M7QW0hrngRllkYyhKAYqKUGguAws0ypLS8JxCLQDgXAIDg+FRKIA6v0SAECCBpXSkstMBAAh+QQFAAANACwAAAAACgAQAAAEOJDJORAac6K1kDSKYmydpASBUl0mqmRfaGTCcQgwcxDEke+9XO2WkxQSiUIuAQAkls0n7JgsWq8RACH5BAUAAA0ALAAAAAAOAA4AAAQ6kMlplDIzTxWC0oxwHALnDQgySAdBHNWFLAvCukc215JIZihVIZEogDIJACBxnCSXTcmwGK1ar1hrBAAh+QQFAAANACwAAAAAEAAKAAAEN5DJKc4RM+tDyNFTkSQF5xmKYmQJACTVpQSBwrpJNteZSGYoFWjIGCAQA2IGsVgglBOmEyoxIiMAIfkEBQAADQAsAgAAAA4ADgAABDmQSVZSKjPPBEDSGucJxyGA1XUQxAFma/tOpDlnhqIYN6MEAUXvF+zldrMBAjHoIRYLhBMqvSmZkggAIfkEBQAADQAsBgAAAAoAEAAABDeQyUmrnSWlYhMASfeFVbZdjHAcgnUQxOHCcqWylKEohqUEAYVkgEAMfkEJYrFA6HhKJsJCNFoiACH5BAUAAA0ALAIAAgAOAA4AAAQ3kMlJq704611SKloCAEk4lln3DQgyUMJxCBKyLAh1EMRR3wiDQmHY9SQslyIQUMRmlmVTIyRaIgA7";
  281. var canvasNode = document.getElementById(c.tag);
  282. canvasNode.style.backgroundColor = "black";
  283. canvasNode.parentNode.appendChild(loadJsImg);
  284. var canvasStyle = getComputedStyle?getComputedStyle(canvasNode):canvasNode.currentStyle;
  285. loadJsImg.style.left = canvasNode.offsetLeft + (parseFloat(canvasStyle.width) - loadJsImg.width)/2 + "px";
  286. loadJsImg.style.top = canvasNode.offsetTop + (parseFloat(canvasStyle.height) - loadJsImg.height)/2 + "px";
  287. loadJsImg.style.position = "absolute";
  288. }
  289. var updateLoading = function(p){
  290. if(p>=1) {
  291. loadJsImg.parentNode.removeChild(loadJsImg);
  292. }
  293. };
  294. var loaded = 0;
  295. var que = engine.concat(c.appFiles);
  296. que.push('main.js');
  297. var loadHandlerIE = function (loaded){
  298. loadNext();
  299. updateLoading(loaded / que.length);
  300. this.removeEventListener('load', loadHandlerIE, false);
  301. };
  302. var loadNext = function () {
  303. i++;
  304. if (i < que.length) {
  305. var f = d.createElement('script');
  306. f.src = que[i];
  307. f.addEventListener('load', loadHandlerIE.bind(f, loaded), false);
  308. d.body.appendChild(f);
  309. }
  310. updateLoading(i / (que.length - 1));
  311. };
  312. var loadHandler = function (){
  313. loaded++;
  314. updateLoading(loaded / que.length);
  315. this.removeEventListener('load', loadHandler, false);
  316. };
  317. if (navigator.userAgent.indexOf("Trident/5") > -1) {
  318. //ie9
  319. var i = -1;
  320. loadNext();
  321. }
  322. else {
  323. que.forEach(function (f, i) {
  324. var s = d.createElement('script');
  325. s.async = false;
  326. s.src = f;
  327. s.addEventListener('load', loadHandler, false);
  328. d.body.appendChild(s);
  329. });
  330. }
  331. })();