ccb 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +20 -0
  3. data/README.md +31 -0
  4. data/bin/ccb +4 -0
  5. data/lib/ccb/builder/project_builder.rb +14 -0
  6. data/lib/ccb/builder/scene_builder.rb +9 -0
  7. data/lib/ccb/builder/templates/project/GameConfig.js.tt +21 -0
  8. data/lib/ccb/builder/templates/project/_cocos-project.json +4 -0
  9. data/lib/ccb/builder/templates/project/folder/CMakeLists.txt +295 -0
  10. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/Base64Images.js +32 -0
  11. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/CCBoot.js +2271 -0
  12. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/CCDebugger.js +336 -0
  13. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions/CCAction.js +694 -0
  14. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions/CCActionCamera.js +293 -0
  15. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions/CCActionCatmullRom.js +605 -0
  16. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions/CCActionEase.js +3681 -0
  17. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions/CCActionInstant.js +757 -0
  18. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions/CCActionInterval.js +3554 -0
  19. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions/CCActionTween.js +166 -0
  20. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions3d/CCActionGrid.js +372 -0
  21. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions3d/CCActionGrid3D.js +1257 -0
  22. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions3d/CCActionPageTurn3D.js +113 -0
  23. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions3d/CCActionTiledGrid.js +1289 -0
  24. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/audio/CCAudio.js +1024 -0
  25. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/clipping-nodes/CCClippingNode.js +224 -0
  26. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/clipping-nodes/CCClippingNodeCanvasRenderCmd.js +227 -0
  27. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/clipping-nodes/CCClippingNodeWebGLRenderCmd.js +226 -0
  28. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/compression/ZipUtils.js +82 -0
  29. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/compression/base64.js +95 -0
  30. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/compression/gzip.js +731 -0
  31. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/compression/zlib.min.js +55 -0
  32. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCActionManager.js +378 -0
  33. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCCamera.js +290 -0
  34. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCConfiguration.js +294 -0
  35. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCDirector.js +1019 -0
  36. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCDirectorWebGL.js +329 -0
  37. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCDrawingPrimitivesCanvas.js +438 -0
  38. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCDrawingPrimitivesWebGL.js +464 -0
  39. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCScheduler.js +744 -0
  40. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/base-nodes/BaseNodesPropertyDefine.js +127 -0
  41. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/base-nodes/CCAtlasNode.js +294 -0
  42. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/base-nodes/CCAtlasNodeCanvasRenderCmd.js +138 -0
  43. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/base-nodes/CCAtlasNodeWebGLRenderCmd.js +145 -0
  44. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/base-nodes/CCNode.js +2386 -0
  45. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/base-nodes/CCNodeCanvasRenderCmd.js +504 -0
  46. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/base-nodes/CCNodeWebGLRenderCmd.js +254 -0
  47. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/cocoa/CCAffineTransform.js +259 -0
  48. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/cocoa/CCGeometry.js +327 -0
  49. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/event-manager/CCEvent.js +449 -0
  50. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/event-manager/CCEventExtension.js +126 -0
  51. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/event-manager/CCEventListener.js +519 -0
  52. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/event-manager/CCEventManager.js +1025 -0
  53. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/event-manager/CCTouch.js +175 -0
  54. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/labelttf/CCLabelTTF.js +829 -0
  55. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/labelttf/CCLabelTTFCanvasRenderCmd.js +420 -0
  56. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/labelttf/CCLabelTTFWebGLRenderCmd.js +101 -0
  57. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/labelttf/LabelTTFPropertyDefine.js +88 -0
  58. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/layers/CCLayer.js +642 -0
  59. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/layers/CCLayerCanvasRenderCmd.js +434 -0
  60. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/layers/CCLayerWebGLRenderCmd.js +248 -0
  61. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCClass.js +333 -0
  62. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCCommon.js +303 -0
  63. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCConfig.js +303 -0
  64. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCEGLView.js +1245 -0
  65. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCInputExtension.js +135 -0
  66. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCInputManager.js +616 -0
  67. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCLoaders.js +142 -0
  68. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCMacro.js +830 -0
  69. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCSAXParser.js +160 -0
  70. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCScreen.js +155 -0
  71. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCTypes.js +374 -0
  72. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCTypesPropertyDefine.js +165 -0
  73. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCTypesWebGL.js +689 -0
  74. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCVisibleRect.js +100 -0
  75. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/miniFramework.js +264 -0
  76. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/renderer/RendererCanvas.js +274 -0
  77. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/renderer/RendererWebGL.js +137 -0
  78. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/scenes/CCLoaderScene.js +149 -0
  79. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/scenes/CCScene.js +62 -0
  80. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCAnimation.js +477 -0
  81. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCAnimationCache.js +213 -0
  82. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCBakeSprite.js +71 -0
  83. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSprite.js +1014 -0
  84. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSpriteBatchNode.js +676 -0
  85. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSpriteBatchNodeCanvasRenderCmd.js +101 -0
  86. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSpriteBatchNodeWebGLRenderCmd.js +243 -0
  87. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSpriteCanvasRenderCmd.js +518 -0
  88. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSpriteFrame.js +420 -0
  89. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSpriteFrameCache.js +341 -0
  90. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSpriteWebGLRenderCmd.js +493 -0
  91. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/SpritesPropertyDefine.js +67 -0
  92. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/support/CCPointExtension.js +515 -0
  93. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/support/CCVertex.js +170 -0
  94. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/support/TransformUtils.js +62 -0
  95. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/textures/CCTexture2D.js +455 -0
  96. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/textures/CCTextureAtlas.js +653 -0
  97. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/textures/CCTextureCache.js +371 -0
  98. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/textures/TexturesPropertyDefine.js +221 -0
  99. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/textures/TexturesWebGL.js +899 -0
  100. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/utils/BinaryLoader.js +151 -0
  101. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/effects/CCGrabber.js +110 -0
  102. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/effects/CCGrid.js +737 -0
  103. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/aabb.js +68 -0
  104. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/gl/mat4stack.js +59 -0
  105. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/gl/matrix.js +169 -0
  106. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/mat3.js +329 -0
  107. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/mat4.js +810 -0
  108. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/plane.js +184 -0
  109. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/quaternion.js +497 -0
  110. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/ray2.js +163 -0
  111. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/utility.js +76 -0
  112. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/vec2.js +107 -0
  113. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/vec3.js +205 -0
  114. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/vec4.js +158 -0
  115. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/labels/CCLabelAtlas.js +239 -0
  116. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/labels/CCLabelAtlasCanvasRenderCmd.js +95 -0
  117. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/labels/CCLabelAtlasWebGLRenderCmd.js +132 -0
  118. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/labels/CCLabelBMFont.js +958 -0
  119. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/labels/CCLabelBMFontCanvasRenderCmd.js +142 -0
  120. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/labels/CCLabelBMFontWebGLRenderCmd.js +87 -0
  121. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/menus/CCMenu.js +600 -0
  122. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/menus/CCMenuItem.js +1422 -0
  123. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/motion-streak/CCMotionStreak.js +517 -0
  124. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/motion-streak/CCMotionStreakWebGLRenderCmd.js +66 -0
  125. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/node-grid/CCNodeGrid.js +129 -0
  126. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/node-grid/CCNodeGridWebGLRenderCmd.js +98 -0
  127. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/parallax/CCParallaxNode.js +252 -0
  128. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/parallax/CCParallaxNodeRenderCmd.js +69 -0
  129. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCPNGReader.js +330 -0
  130. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCParticleBatchNode.js +527 -0
  131. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCParticleBatchNodeCanvasRenderCmd.js +38 -0
  132. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCParticleBatchNodeWebGLRenderCmd.js +74 -0
  133. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCParticleExamples.js +1006 -0
  134. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCParticleSystem.js +2294 -0
  135. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCParticleSystemCanvasRenderCmd.js +217 -0
  136. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCParticleSystemWebGLRenderCmd.js +402 -0
  137. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCTIFFReader.js +692 -0
  138. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/physics/CCPhysicsDebugNode.js +212 -0
  139. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/physics/CCPhysicsDebugNodeCanvasRenderCmd.js +52 -0
  140. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/physics/CCPhysicsDebugNodeWebGLRenderCmd.js +53 -0
  141. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/physics/CCPhysicsSprite.js +447 -0
  142. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/physics/CCPhysicsSpriteCanvasRenderCmd.js +93 -0
  143. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/physics/CCPhysicsSpriteWebGLRenderCmd.js +87 -0
  144. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/progress-timer/CCActionProgressTimer.js +227 -0
  145. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/progress-timer/CCProgressTimer.js +345 -0
  146. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/progress-timer/CCProgressTimerCanvasRenderCmd.js +270 -0
  147. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/progress-timer/CCProgressTimerWebGLRenderCmd.js +486 -0
  148. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/render-texture/CCRenderTexture.js +395 -0
  149. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/render-texture/CCRenderTextureCanvasRenderCmd.js +105 -0
  150. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/render-texture/CCRenderTextureWebGLRenderCmd.js +367 -0
  151. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/shaders/CCGLProgram.js +767 -0
  152. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/shaders/CCGLStateCache.js +340 -0
  153. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/shaders/CCShaderCache.js +301 -0
  154. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/shaders/CCShaders.js +280 -0
  155. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/shape-nodes/CCDrawNode.js +940 -0
  156. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/shape-nodes/CCDrawNodeCanvasRenderCmd.js +129 -0
  157. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/shape-nodes/CCDrawNodeWebGLRenderCmd.js +41 -0
  158. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/text-input/CCIMEDispatcher.js +526 -0
  159. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/text-input/CCTextFieldTTF.js +472 -0
  160. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/tilemap/CCTGAlib.js +437 -0
  161. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/tilemap/CCTMXLayer.js +914 -0
  162. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/tilemap/CCTMXLayerCanvasRenderCmd.js +232 -0
  163. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/tilemap/CCTMXLayerWebGLRenderCmd.js +67 -0
  164. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/tilemap/CCTMXObjectGroup.js +146 -0
  165. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/tilemap/CCTMXTiledMap.js +479 -0
  166. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/tilemap/CCTMXXMLParser.js +950 -0
  167. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/transitions/CCTransition.js +1971 -0
  168. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/transitions/CCTransitionPageTurn.js +152 -0
  169. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/transitions/CCTransitionProgress.js +458 -0
  170. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCBAnimationManager.js +770 -0
  171. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCBKeyframe.js +60 -0
  172. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCBReader.js +1129 -0
  173. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCBReaderUtil.js +61 -0
  174. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCBRelativePositioning.js +90 -0
  175. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCBSequence.js +114 -0
  176. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCBValue.js +81 -0
  177. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCControlLoader.js +318 -0
  178. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCNodeLoader.js +905 -0
  179. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCNodeLoaderLibrary.js +101 -0
  180. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCSpriteLoader.js +544 -0
  181. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccpool/CCPool.js +146 -0
  182. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/CCProtectedNode.js +305 -0
  183. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/CCProtectedNodeCanvasRenderCmd.js +246 -0
  184. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/CCProtectedNodeWebGLRenderCmd.js +159 -0
  185. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/UIScale9Sprite.js +1105 -0
  186. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/UIScale9SpriteCanvasRenderCmd.js +142 -0
  187. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/UIScale9SpriteWebGLRenderCmd.js +129 -0
  188. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/UIWidget.js +2059 -0
  189. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/UIWidgetRenderCmd.js +100 -0
  190. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UIHBox.js +80 -0
  191. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UILayout.js +1558 -0
  192. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UILayoutCanvasRenderCmd.js +179 -0
  193. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UILayoutComponent.js +585 -0
  194. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UILayoutManager.js +457 -0
  195. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UILayoutParameter.js +576 -0
  196. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UILayoutWebGLRenderCmd.js +240 -0
  197. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UIRelativeBox.js +79 -0
  198. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UIVBox.js +79 -0
  199. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/system/CocosGUI.js +62 -0
  200. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/system/UIHelper.js +164 -0
  201. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UIButton.js +987 -0
  202. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UICheckBox.js +737 -0
  203. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UIImageView.js +337 -0
  204. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UILoadingBar.js +432 -0
  205. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UIRichText.js +579 -0
  206. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UISlider.js +762 -0
  207. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UIText.js +512 -0
  208. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UITextAtlas.js +229 -0
  209. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UITextBMFont.js +216 -0
  210. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UITextField.js +915 -0
  211. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/scroll-widget/UIListView.js +602 -0
  212. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/scroll-widget/UIPageView.js +657 -0
  213. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/scroll-widget/UIScrollView.js +1884 -0
  214. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/CocoStudio.js +68 -0
  215. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/action/CCActionFrame.js +528 -0
  216. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/action/CCActionManager.js +112 -0
  217. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/action/CCActionNode.js +417 -0
  218. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/action/CCActionObject.js +263 -0
  219. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/CCArmature.js +579 -0
  220. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/CCArmatureCanvasRenderCmd.js +190 -0
  221. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/CCArmatureWebGLRenderCmd.js +167 -0
  222. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/CCBone.js +711 -0
  223. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/animation/CCArmatureAnimation.js +669 -0
  224. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/animation/CCProcessBase.js +365 -0
  225. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/animation/CCTween.js +448 -0
  226. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/datas/CCDatas.js +807 -0
  227. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/display/CCDecorativeDisplay.js +118 -0
  228. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/display/CCDisplayFactory.js +220 -0
  229. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/display/CCDisplayManager.js +465 -0
  230. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/display/CCSkin.js +215 -0
  231. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/display/CCSkinCanvasRenderCmd.js +58 -0
  232. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/display/CCSkinWebGLRenderCmd.js +146 -0
  233. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/physics/CCColliderDetector.js +397 -0
  234. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/utils/CCArmatureDataManager.js +325 -0
  235. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/utils/CCArmatureDefine.js +45 -0
  236. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/utils/CCDataReaderHelper.js +1223 -0
  237. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/utils/CCSpriteFrameCacheHelper.js +68 -0
  238. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/utils/CCTransformHelp.js +183 -0
  239. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/utils/CCTweenFunction.js +501 -0
  240. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/utils/CCUtilMath.js +69 -0
  241. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/components/CCComAttribute.js +210 -0
  242. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/components/CCComAudio.js +285 -0
  243. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/components/CCComController.js +76 -0
  244. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/components/CCComRender.js +91 -0
  245. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/components/CCComponent.js +136 -0
  246. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/components/CCComponentContainer.js +159 -0
  247. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/load.js +221 -0
  248. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/parsers/action-1.x.js +238 -0
  249. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/parsers/action-2.x.js +266 -0
  250. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/parsers/compatible.js +251 -0
  251. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/parsers/scene-1.x.js +262 -0
  252. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/parsers/timelineParser-1.x.js +292 -0
  253. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/parsers/timelineParser-2.x.js +1288 -0
  254. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/parsers/uiParser-1.x.js +680 -0
  255. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/timeline/ActionTimeline.js +448 -0
  256. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/timeline/Frame.js +1268 -0
  257. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/timeline/Timeline.js +321 -0
  258. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/trigger/ObjectFactory.js +99 -0
  259. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/trigger/TriggerBase.js +49 -0
  260. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/trigger/TriggerMng.js +301 -0
  261. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/trigger/TriggerObj.js +263 -0
  262. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/editbox/CCEditBox.js +716 -0
  263. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/editbox/CCdomNode.js +657 -0
  264. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControl.js +381 -0
  265. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlButton.js +688 -0
  266. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlColourPicker.js +187 -0
  267. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlHuePicker.js +218 -0
  268. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlPotentiometer.js +300 -0
  269. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlSaturationBrightnessPicker.js +257 -0
  270. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlSlider.js +308 -0
  271. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlStepper.js +390 -0
  272. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlSwitch.js +425 -0
  273. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlUtils.js +177 -0
  274. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCInvocation.js +65 -0
  275. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCMenuPassive.js +415 -0
  276. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCScale9Sprite.js +1099 -0
  277. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCScale9SpriteCanvasRenderCmd.js +142 -0
  278. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCScale9SpriteWebGLRenderCmd.js +129 -0
  279. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/scrollview/CCScrollView.js +827 -0
  280. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/scrollview/CCScrollViewCanvasRenderCmd.js +79 -0
  281. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/scrollview/CCScrollViewWebGLRenderCmd.js +108 -0
  282. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/scrollview/CCSorting.js +239 -0
  283. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/scrollview/CCTableView.js +718 -0
  284. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/spine/CCSkeleton.js +357 -0
  285. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/spine/CCSkeletonAnimation.js +340 -0
  286. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/spine/CCSkeletonCanvasRenderCmd.js +165 -0
  287. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/spine/CCSkeletonWebGLRenderCmd.js +165 -0
  288. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/spine/Spine.js +2239 -0
  289. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/external/box2d/box2d.js +10882 -0
  290. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/external/chipmunk/chipmunk.js +6196 -0
  291. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/external/pluginx/Plugin.js +254 -0
  292. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/external/pluginx/platform/facebook.js +557 -0
  293. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/external/pluginx/platform/facebook_sdk.js +151 -0
  294. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/external/socketio/socket.io.min.js +2 -0
  295. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/jsb_apis.js +618 -0
  296. data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/moduleConfig.json +453 -0
  297. data/lib/ccb/builder/templates/project/folder/project.json +42 -0
  298. data/lib/ccb/builder/templates/project/folder/res/CloseNormal.png +0 -0
  299. data/lib/ccb/builder/templates/project/folder/res/CloseSelected.png +0 -0
  300. data/lib/ccb/builder/templates/project/folder/res/HelloWorld.png +0 -0
  301. data/lib/ccb/builder/templates/project/folder/res/favicon.ico +0 -0
  302. data/lib/ccb/builder/templates/project/folder/res/gameOver/cocos2d-html5.png +0 -0
  303. data/lib/ccb/builder/templates/project/folder/res/gameOver/gameOver.png +0 -0
  304. data/lib/ccb/builder/templates/project/folder/res/mainMenu/bg.png +0 -0
  305. data/lib/ccb/builder/templates/project/folder/res/mainMenu/menu.png +0 -0
  306. data/lib/ccb/builder/templates/project/folder/res/setting/menuTitle.png +0 -0
  307. data/lib/ccb/builder/templates/project/folder/res/shared/arial-14.fnt +182 -0
  308. data/lib/ccb/builder/templates/project/folder/res/shared/arial-14.png +0 -0
  309. data/lib/ccb/builder/templates/project/folder/res/sound/music/bgMusic.mp3 +0 -0
  310. data/lib/ccb/builder/templates/project/folder/src/about/layer/ABBackgroundLayer.js +23 -0
  311. data/lib/ccb/builder/templates/project/folder/src/about/layer/ABTouchLayer.js +51 -0
  312. data/lib/ccb/builder/templates/project/folder/src/about/scene/About.js +36 -0
  313. data/lib/ccb/builder/templates/project/folder/src/config/Level.js +7 -0
  314. data/lib/ccb/builder/templates/project/folder/src/gameOver/layer/GOBackgroundLayer.js +50 -0
  315. data/lib/ccb/builder/templates/project/folder/src/gameOver/layer/GOTouchLayer.js +51 -0
  316. data/lib/ccb/builder/templates/project/folder/src/gameOver/scene/GameOver.js +38 -0
  317. data/lib/ccb/builder/templates/project/folder/src/gamePlay/classes/LevelManager.js +21 -0
  318. data/lib/ccb/builder/templates/project/folder/src/gamePlay/layer/GPBackgroundLayer.js +25 -0
  319. data/lib/ccb/builder/templates/project/folder/src/gamePlay/layer/GPTouchLayer.js +51 -0
  320. data/lib/ccb/builder/templates/project/folder/src/gamePlay/scene/GamePlay.js +44 -0
  321. data/lib/ccb/builder/templates/project/folder/src/mainMenu/layer/MMBackgroundLayer.js +43 -0
  322. data/lib/ccb/builder/templates/project/folder/src/mainMenu/layer/MMMainMenuLayer.js +38 -0
  323. data/lib/ccb/builder/templates/project/folder/src/mainMenu/layer/MMTouchLayer.js +96 -0
  324. data/lib/ccb/builder/templates/project/folder/src/mainMenu/scene/MainMenu.js +45 -0
  325. data/lib/ccb/builder/templates/project/folder/src/resource.js +29 -0
  326. data/lib/ccb/builder/templates/project/folder/src/setting/layer/STBackgroundLayer.js +25 -0
  327. data/lib/ccb/builder/templates/project/folder/src/setting/layer/STTouchLayer.js +89 -0
  328. data/lib/ccb/builder/templates/project/folder/src/setting/scene/Setting.js +40 -0
  329. data/lib/ccb/builder/templates/project/index.html.tt +27 -0
  330. data/lib/ccb/builder/templates/project/main.js.tt +62 -0
  331. data/lib/ccb/cli.rb +32 -0
  332. data/lib/ccb/ext/method_hooker.rb +68 -0
  333. data/lib/ccb/ext/string_extention.rb +7 -0
  334. data/lib/ccb.rb +1 -0
  335. metadata +449 -0
@@ -0,0 +1,2271 @@
1
+ /****************************************************************************
2
+ Copyright (c) 2011-2012 cocos2d-x.org
3
+ Copyright (c) 2013-2014 Chukong Technologies Inc.
4
+
5
+ http://www.cocos2d-x.org
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in
15
+ all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ THE SOFTWARE.
24
+ ****************************************************************************/
25
+
26
+ /**
27
+ * The main namespace of Cocos2d-JS, all engine core classes, functions, properties and constants are defined in this namespace
28
+ * @namespace
29
+ * @name cc
30
+ */
31
+ var cc = cc || {};
32
+ cc._tmp = cc._tmp || {};
33
+ cc._LogInfos = {};
34
+
35
+ /** @expose */
36
+ window._p;
37
+ _p = window;
38
+ /** @expose */
39
+ _p.gl;
40
+ /** @expose */
41
+ _p.WebGLRenderingContext;
42
+ /** @expose */
43
+ _p.DeviceOrientationEvent;
44
+ /** @expose */
45
+ _p.DeviceMotionEvent;
46
+ /** @expose */
47
+ _p.AudioContext;
48
+ /** @expose */
49
+ _p.webkitAudioContext;
50
+ /** @expose */
51
+ _p.mozAudioContext;
52
+ _p = Object.prototype;
53
+ /** @expose */
54
+ _p._super;
55
+ /** @expose */
56
+ _p.ctor;
57
+ delete window._p;
58
+
59
+ cc.newElement = function (x) {
60
+ return document.createElement(x);
61
+ };
62
+
63
+ cc._addEventListener = function (element, type, listener, useCapture) {
64
+ element.addEventListener(type, listener, useCapture);
65
+ };
66
+
67
+ //is nodejs ? Used to support node-webkit.
68
+ cc._isNodeJs = typeof require !== 'undefined' && require("fs");
69
+
70
+ /**
71
+ * Iterate over an object or an array, executing a function for each matched element.
72
+ * @param {object|array} obj
73
+ * @param {function} iterator
74
+ * @param {object} [context]
75
+ */
76
+ cc.each = function (obj, iterator, context) {
77
+ if (!obj)
78
+ return;
79
+ if (obj instanceof Array) {
80
+ for (var i = 0, li = obj.length; i < li; i++) {
81
+ if (iterator.call(context, obj[i], i) === false)
82
+ return;
83
+ }
84
+ } else {
85
+ for (var key in obj) {
86
+ if (iterator.call(context, obj[key], key) === false)
87
+ return;
88
+ }
89
+ }
90
+ };
91
+
92
+ /**
93
+ * Copy all of the properties in source objects to target object and return the target object.
94
+ * @param {object} target
95
+ * @param {object} *sources
96
+ * @returns {object}
97
+ */
98
+ cc.extend = function(target) {
99
+ var sources = arguments.length >= 2 ? Array.prototype.slice.call(arguments, 1) : [];
100
+
101
+ cc.each(sources, function(src) {
102
+ for(var key in src) {
103
+ if (src.hasOwnProperty(key)) {
104
+ target[key] = src[key];
105
+ }
106
+ }
107
+ });
108
+ return target;
109
+ };
110
+
111
+ /**
112
+ * Check the obj whether is function or not
113
+ * @param {*} obj
114
+ * @returns {boolean}
115
+ */
116
+ cc.isFunction = function(obj) {
117
+ return typeof obj == 'function';
118
+ };
119
+
120
+ /**
121
+ * Check the obj whether is number or not
122
+ * @param {*} obj
123
+ * @returns {boolean}
124
+ */
125
+ cc.isNumber = function(obj) {
126
+ return typeof obj == 'number' || Object.prototype.toString.call(obj) == '[object Number]';
127
+ };
128
+
129
+ /**
130
+ * Check the obj whether is string or not
131
+ * @param {*} obj
132
+ * @returns {boolean}
133
+ */
134
+ cc.isString = function(obj) {
135
+ return typeof obj == 'string' || Object.prototype.toString.call(obj) == '[object String]';
136
+ };
137
+
138
+ /**
139
+ * Check the obj whether is array or not
140
+ * @param {*} obj
141
+ * @returns {boolean}
142
+ */
143
+ cc.isArray = function(obj) {
144
+ return Object.prototype.toString.call(obj) == '[object Array]';
145
+ };
146
+
147
+ /**
148
+ * Check the obj whether is undefined or not
149
+ * @param {*} obj
150
+ * @returns {boolean}
151
+ */
152
+ cc.isUndefined = function(obj) {
153
+ return typeof obj == 'undefined';
154
+ };
155
+
156
+ /**
157
+ * Check the obj whether is object or not
158
+ * @param {*} obj
159
+ * @returns {boolean}
160
+ */
161
+ cc.isObject = function(obj) {
162
+ var type = typeof obj;
163
+
164
+ return type == 'function' || (obj && type == 'object');
165
+ };
166
+
167
+ /**
168
+ * Check the url whether cross origin
169
+ * @param {String} url
170
+ * @returns {boolean}
171
+ */
172
+ cc.isCrossOrigin = function (url) {
173
+ if (!url) {
174
+ cc.log("invalid URL");
175
+ return false;
176
+ }
177
+ var startIndex = url.indexOf("://");
178
+ if (startIndex == -1)
179
+ return false;
180
+
181
+ var endIndex = url.indexOf("/", startIndex + 3);
182
+ var urlOrigin = (endIndex == -1) ? url : url.substring(0, endIndex);
183
+ return urlOrigin != location.origin;
184
+ };
185
+
186
+ //+++++++++++++++++++++++++something about async begin+++++++++++++++++++++++++++++++
187
+ /**
188
+ * Async Pool class, a helper of cc.async
189
+ * @param {Object|Array} srcObj
190
+ * @param {Number} limit the limit of parallel number
191
+ * @param {function} iterator
192
+ * @param {function} onEnd
193
+ * @param {object} target
194
+ * @constructor
195
+ */
196
+ cc.AsyncPool = function(srcObj, limit, iterator, onEnd, target){
197
+ var self = this;
198
+ self._srcObj = srcObj;
199
+ self._limit = limit;
200
+ self._pool = [];
201
+ self._iterator = iterator;
202
+ self._iteratorTarget = target;
203
+ self._onEnd = onEnd;
204
+ self._onEndTarget = target;
205
+ self._results = srcObj instanceof Array ? [] : {};
206
+ self._isErr = false;
207
+
208
+ cc.each(srcObj, function(value, index){
209
+ self._pool.push({index : index, value : value});
210
+ });
211
+
212
+ self.size = self._pool.length;
213
+ self.finishedSize = 0;
214
+ self._workingSize = 0;
215
+
216
+ self._limit = self._limit || self.size;
217
+
218
+ self.onIterator = function(iterator, target){
219
+ self._iterator = iterator;
220
+ self._iteratorTarget = target;
221
+ };
222
+
223
+ self.onEnd = function(endCb, endCbTarget){
224
+ self._onEnd = endCb;
225
+ self._onEndTarget = endCbTarget;
226
+ };
227
+
228
+ self._handleItem = function(){
229
+ var self = this;
230
+ if(self._pool.length == 0 || self._workingSize >= self._limit)
231
+ return; //return directly if the array's length = 0 or the working size great equal limit number
232
+
233
+ var item = self._pool.shift();
234
+ var value = item.value, index = item.index;
235
+ self._workingSize++;
236
+ self._iterator.call(self._iteratorTarget, value, index,
237
+ function(err) {
238
+ if (self._isErr)
239
+ return;
240
+
241
+ self.finishedSize++;
242
+ self._workingSize--;
243
+ if (err) {
244
+ self._isErr = true;
245
+ if (self._onEnd)
246
+ self._onEnd.call(self._onEndTarget, err);
247
+ return;
248
+ }
249
+
250
+ var arr = Array.prototype.slice.call(arguments, 1);
251
+ self._results[this.index] = arr[0];
252
+ if (self.finishedSize == self.size) {
253
+ if (self._onEnd)
254
+ self._onEnd.call(self._onEndTarget, null, self._results);
255
+ return;
256
+ }
257
+ self._handleItem();
258
+ }.bind(item),
259
+ self);
260
+ };
261
+
262
+ self.flow = function(){
263
+ var self = this;
264
+ if(self._pool.length == 0) {
265
+ if(self._onEnd)
266
+ self._onEnd.call(self._onEndTarget, null, []);
267
+ return;
268
+ }
269
+ for(var i = 0; i < self._limit; i++)
270
+ self._handleItem();
271
+ }
272
+ };
273
+
274
+ /**
275
+ * @class
276
+ */
277
+ cc.async = /** @lends cc.async# */{
278
+ /**
279
+ * Do tasks series.
280
+ * @param {Array|Object} tasks
281
+ * @param {function} [cb] callback
282
+ * @param {Object} [target]
283
+ * @return {cc.AsyncPool}
284
+ */
285
+ series : function(tasks, cb, target){
286
+ var asyncPool = new cc.AsyncPool(tasks, 1, function(func, index, cb1){
287
+ func.call(target, cb1);
288
+ }, cb, target);
289
+ asyncPool.flow();
290
+ return asyncPool;
291
+ },
292
+
293
+ /**
294
+ * Do tasks parallel.
295
+ * @param {Array|Object} tasks
296
+ * @param {function} cb callback
297
+ * @param {Object} [target]
298
+ * @return {cc.AsyncPool}
299
+ */
300
+ parallel : function(tasks, cb, target){
301
+ var asyncPool = new cc.AsyncPool(tasks, 0, function(func, index, cb1){
302
+ func.call(target, cb1);
303
+ }, cb, target);
304
+ asyncPool.flow();
305
+ return asyncPool;
306
+ },
307
+
308
+ /**
309
+ * Do tasks waterfall.
310
+ * @param {Array|Object} tasks
311
+ * @param {function} cb callback
312
+ * @param {Object} [target]
313
+ * @return {cc.AsyncPool}
314
+ */
315
+ waterfall : function(tasks, cb, target){
316
+ var args = [];
317
+ var lastResults = [null];//the array to store the last results
318
+ var asyncPool = new cc.AsyncPool(tasks, 1,
319
+ function (func, index, cb1) {
320
+ args.push(function (err) {
321
+ args = Array.prototype.slice.call(arguments, 1);
322
+ if(tasks.length - 1 == index) lastResults = lastResults.concat(args);//while the last task
323
+ cb1.apply(null, arguments);
324
+ });
325
+ func.apply(target, args);
326
+ }, function (err) {
327
+ if (!cb)
328
+ return;
329
+ if (err)
330
+ return cb.call(target, err);
331
+ cb.apply(target, lastResults);
332
+ });
333
+ asyncPool.flow();
334
+ return asyncPool;
335
+ },
336
+
337
+ /**
338
+ * Do tasks by iterator.
339
+ * @param {Array|Object} tasks
340
+ * @param {function|Object} iterator
341
+ * @param {function} [callback]
342
+ * @param {Object} [target]
343
+ * @return {cc.AsyncPool}
344
+ */
345
+ map : function(tasks, iterator, callback, target){
346
+ var locIterator = iterator;
347
+ if(typeof(iterator) == "object"){
348
+ callback = iterator.cb;
349
+ target = iterator.iteratorTarget;
350
+ locIterator = iterator.iterator;
351
+ }
352
+ var asyncPool = new cc.AsyncPool(tasks, 0, locIterator, callback, target);
353
+ asyncPool.flow();
354
+ return asyncPool;
355
+ },
356
+
357
+ /**
358
+ * Do tasks by iterator limit.
359
+ * @param {Array|Object} tasks
360
+ * @param {Number} limit
361
+ * @param {function} iterator
362
+ * @param {function} cb callback
363
+ * @param {Object} [target]
364
+ */
365
+ mapLimit : function(tasks, limit, iterator, cb, target){
366
+ var asyncPool = new cc.AsyncPool(tasks, limit, iterator, cb, target);
367
+ asyncPool.flow();
368
+ return asyncPool;
369
+ }
370
+ };
371
+ //+++++++++++++++++++++++++something about async end+++++++++++++++++++++++++++++++++
372
+
373
+ //+++++++++++++++++++++++++something about path begin++++++++++++++++++++++++++++++++
374
+ /**
375
+ * @class
376
+ */
377
+ cc.path = /** @lends cc.path# */{
378
+ /**
379
+ * Join strings to be a path.
380
+ * @example
381
+ cc.path.join("a", "b.png");//-->"a/b.png"
382
+ cc.path.join("a", "b", "c.png");//-->"a/b/c.png"
383
+ cc.path.join("a", "b");//-->"a/b"
384
+ cc.path.join("a", "b", "/");//-->"a/b/"
385
+ cc.path.join("a", "b/", "/");//-->"a/b/"
386
+ * @returns {string}
387
+ */
388
+ join: function () {
389
+ var l = arguments.length;
390
+ var result = "";
391
+ for (var i = 0; i < l; i++) {
392
+ result = (result + (result == "" ? "" : "/") + arguments[i]).replace(/(\/|\\\\)$/, "");
393
+ }
394
+ return result;
395
+ },
396
+
397
+ /**
398
+ * Get the ext name of a path.
399
+ * @example
400
+ cc.path.extname("a/b.png");//-->".png"
401
+ cc.path.extname("a/b.png?a=1&b=2");//-->".png"
402
+ cc.path.extname("a/b");//-->null
403
+ cc.path.extname("a/b?a=1&b=2");//-->null
404
+ * @param {string} pathStr
405
+ * @returns {*}
406
+ */
407
+ extname: function (pathStr) {
408
+ var temp = /(\.[^\.\/\?\\]*)(\?.*)?$/.exec(pathStr);
409
+ return temp ? temp[1] : null;
410
+ },
411
+
412
+ /**
413
+ * Get the main name of a file name
414
+ * @param {string} fileName
415
+ * @returns {string}
416
+ */
417
+ mainFileName: function(fileName){
418
+ if(fileName){
419
+ var idx = fileName.lastIndexOf(".");
420
+ if(idx !== -1)
421
+ return fileName.substring(0,idx);
422
+ }
423
+ return fileName;
424
+ },
425
+
426
+ /**
427
+ * Get the file name of a file path.
428
+ * @example
429
+ cc.path.basename("a/b.png");//-->"b.png"
430
+ cc.path.basename("a/b.png?a=1&b=2");//-->"b.png"
431
+ cc.path.basename("a/b.png", ".png");//-->"b"
432
+ cc.path.basename("a/b.png?a=1&b=2", ".png");//-->"b"
433
+ cc.path.basename("a/b.png", ".txt");//-->"b.png"
434
+ * @param {string} pathStr
435
+ * @param {string} [extname]
436
+ * @returns {*}
437
+ */
438
+ basename: function (pathStr, extname) {
439
+ var index = pathStr.indexOf("?");
440
+ if (index > 0) pathStr = pathStr.substring(0, index);
441
+ var reg = /(\/|\\\\)([^(\/|\\\\)]+)$/g;
442
+ var result = reg.exec(pathStr.replace(/(\/|\\\\)$/, ""));
443
+ if (!result) return null;
444
+ var baseName = result[2];
445
+ if (extname && pathStr.substring(pathStr.length - extname.length).toLowerCase() == extname.toLowerCase())
446
+ return baseName.substring(0, baseName.length - extname.length);
447
+ return baseName;
448
+ },
449
+
450
+ /**
451
+ * Get dirname of a file path.
452
+ * @example
453
+ * unix
454
+ cc.path.driname("a/b/c.png");//-->"a/b"
455
+ cc.path.driname("a/b/c.png?a=1&b=2");//-->"a/b"
456
+ cc.path.dirname("a/b/");//-->"a/b"
457
+ cc.path.dirname("c.png");//-->""
458
+ * windows
459
+ cc.path.driname("a\\b\\c.png");//-->"a\b"
460
+ cc.path.driname("a\\b\\c.png?a=1&b=2");//-->"a\b"
461
+ * @param {string} pathStr
462
+ * @returns {*}
463
+ */
464
+ dirname: function (pathStr) {
465
+ return pathStr.replace(/((.*)(\/|\\|\\\\))?(.*?\..*$)?/, '$2');
466
+ },
467
+
468
+ /**
469
+ * Change extname of a file path.
470
+ * @example
471
+ cc.path.changeExtname("a/b.png", ".plist");//-->"a/b.plist"
472
+ cc.path.changeExtname("a/b.png?a=1&b=2", ".plist");//-->"a/b.plist?a=1&b=2"
473
+ * @param {string} pathStr
474
+ * @param {string} [extname]
475
+ * @returns {string}
476
+ */
477
+ changeExtname: function (pathStr, extname) {
478
+ extname = extname || "";
479
+ var index = pathStr.indexOf("?");
480
+ var tempStr = "";
481
+ if (index > 0) {
482
+ tempStr = pathStr.substring(index);
483
+ pathStr = pathStr.substring(0, index);
484
+ }
485
+ index = pathStr.lastIndexOf(".");
486
+ if (index < 0) return pathStr + extname + tempStr;
487
+ return pathStr.substring(0, index) + extname + tempStr;
488
+ },
489
+ /**
490
+ * Change file name of a file path.
491
+ * @example
492
+ cc.path.changeBasename("a/b/c.plist", "b.plist");//-->"a/b/b.plist"
493
+ cc.path.changeBasename("a/b/c.plist?a=1&b=2", "b.plist");//-->"a/b/b.plist?a=1&b=2"
494
+ cc.path.changeBasename("a/b/c.plist", ".png");//-->"a/b/c.png"
495
+ cc.path.changeBasename("a/b/c.plist", "b");//-->"a/b/b"
496
+ cc.path.changeBasename("a/b/c.plist", "b", true);//-->"a/b/b.plist"
497
+ * @param {String} pathStr
498
+ * @param {String} basename
499
+ * @param {Boolean} [isSameExt]
500
+ * @returns {string}
501
+ */
502
+ changeBasename: function (pathStr, basename, isSameExt) {
503
+ if (basename.indexOf(".") == 0) return this.changeExtname(pathStr, basename);
504
+ var index = pathStr.indexOf("?");
505
+ var tempStr = "";
506
+ var ext = isSameExt ? this.extname(pathStr) : "";
507
+ if (index > 0) {
508
+ tempStr = pathStr.substring(index);
509
+ pathStr = pathStr.substring(0, index);
510
+ }
511
+ index = pathStr.lastIndexOf("/");
512
+ index = index <= 0 ? 0 : index + 1;
513
+ return pathStr.substring(0, index) + basename + ext + tempStr;
514
+ }
515
+ };
516
+ //+++++++++++++++++++++++++something about path end++++++++++++++++++++++++++++++++
517
+
518
+ //+++++++++++++++++++++++++something about loader start+++++++++++++++++++++++++++
519
+ /**
520
+ * Loader for resource loading process. It's a singleton object.
521
+ * @class
522
+ */
523
+ cc.loader = /** @lends cc.loader# */{
524
+ _jsCache: {},//cache for js
525
+ _register: {},//register of loaders
526
+ _langPathCache: {},//cache for lang path
527
+ _aliases: {},//aliases for res url
528
+
529
+ resPath: "",//root path of resource
530
+ audioPath: "",//root path of audio
531
+ cache: {},//cache for data loaded
532
+
533
+ /**
534
+ * Get XMLHttpRequest.
535
+ * @returns {XMLHttpRequest}
536
+ */
537
+ getXMLHttpRequest: function () {
538
+ return window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP");
539
+ },
540
+
541
+ //@MODE_BEGIN DEV
542
+
543
+ _getArgs4Js: function (args) {
544
+ var a0 = args[0], a1 = args[1], a2 = args[2], results = ["", null, null];
545
+
546
+ if (args.length === 1) {
547
+ results[1] = a0 instanceof Array ? a0 : [a0];
548
+ } else if (args.length === 2) {
549
+ if (typeof a1 == "function") {
550
+ results[1] = a0 instanceof Array ? a0 : [a0];
551
+ results[2] = a1;
552
+ } else {
553
+ results[0] = a0 || "";
554
+ results[1] = a1 instanceof Array ? a1 : [a1];
555
+ }
556
+ } else if (args.length === 3) {
557
+ results[0] = a0 || "";
558
+ results[1] = a1 instanceof Array ? a1 : [a1];
559
+ results[2] = a2;
560
+ } else throw "arguments error to load js!";
561
+ return results;
562
+ },
563
+
564
+ /**
565
+ * Load js files.
566
+ * If the third parameter doesn't exist, then the baseDir turns to be "".
567
+ *
568
+ * @param {string} [baseDir] The pre path for jsList or the list of js path.
569
+ * @param {array} jsList List of js path.
570
+ * @param {function} [cb] Callback function
571
+ * @returns {*}
572
+ */
573
+ loadJs: function (baseDir, jsList, cb) {
574
+ var self = this, localJsCache = self._jsCache,
575
+ args = self._getArgs4Js(arguments);
576
+
577
+ var preDir = args[0], list = args[1], callback = args[2];
578
+ if (navigator.userAgent.indexOf("Trident/5") > -1) {
579
+ self._loadJs4Dependency(preDir, list, 0, callback);
580
+ } else {
581
+ cc.async.map(list, function (item, index, cb1) {
582
+ var jsPath = cc.path.join(preDir, item);
583
+ if (localJsCache[jsPath]) return cb1(null);
584
+ self._createScript(jsPath, false, cb1);
585
+ }, callback);
586
+ }
587
+ },
588
+ /**
589
+ * Load js width loading image.
590
+ *
591
+ * @param {string} [baseDir]
592
+ * @param {array} jsList
593
+ * @param {function} [cb]
594
+ */
595
+ loadJsWithImg: function (baseDir, jsList, cb) {
596
+ var self = this, jsLoadingImg = self._loadJsImg(),
597
+ args = self._getArgs4Js(arguments);
598
+ this.loadJs(args[0], args[1], function (err) {
599
+ if (err) throw err;
600
+ jsLoadingImg.parentNode.removeChild(jsLoadingImg);//remove loading gif
601
+ if (args[2]) args[2]();
602
+ });
603
+ },
604
+ _createScript: function (jsPath, isAsync, cb) {
605
+ var d = document, self = this, s = cc.newElement('script');
606
+ s.async = isAsync;
607
+ self._jsCache[jsPath] = true;
608
+ if(cc.game.config["noCache"] && typeof jsPath === "string"){
609
+ if(self._noCacheRex.test(jsPath))
610
+ s.src = jsPath + "&_t=" + (new Date() - 0);
611
+ else
612
+ s.src = jsPath + "?_t=" + (new Date() - 0);
613
+ }else{
614
+ s.src = jsPath;
615
+ }
616
+ cc._addEventListener(s, 'load', function () {
617
+ s.parentNode.removeChild(s);
618
+ this.removeEventListener('load', arguments.callee, false);
619
+ cb();
620
+ }, false);
621
+ cc._addEventListener(s, 'error', function () {
622
+ s.parentNode.removeChild(s);
623
+ cb("Load " + jsPath + " failed!");
624
+ }, false);
625
+ d.body.appendChild(s);
626
+ },
627
+ _loadJs4Dependency: function (baseDir, jsList, index, cb) {
628
+ if (index >= jsList.length) {
629
+ if (cb) cb();
630
+ return;
631
+ }
632
+ var self = this;
633
+ self._createScript(cc.path.join(baseDir, jsList[index]), false, function (err) {
634
+ if (err) return cb(err);
635
+ self._loadJs4Dependency(baseDir, jsList, index + 1, cb);
636
+ });
637
+ },
638
+ _loadJsImg: function () {
639
+ var d = document, jsLoadingImg = d.getElementById("cocos2d_loadJsImg");
640
+ if (!jsLoadingImg) {
641
+ jsLoadingImg = cc.newElement('img');
642
+
643
+ if (cc._loadingImage)
644
+ jsLoadingImg.src = cc._loadingImage;
645
+
646
+ var canvasNode = d.getElementById(cc.game.config["id"]);
647
+ canvasNode.style.backgroundColor = "black";
648
+ canvasNode.parentNode.appendChild(jsLoadingImg);
649
+
650
+ var canvasStyle = getComputedStyle ? getComputedStyle(canvasNode) : canvasNode.currentStyle;
651
+ if (!canvasStyle)
652
+ canvasStyle = {width: canvasNode.width, height: canvasNode.height};
653
+ jsLoadingImg.style.left = canvasNode.offsetLeft + (parseFloat(canvasStyle.width) - jsLoadingImg.width) / 2 + "px";
654
+ jsLoadingImg.style.top = canvasNode.offsetTop + (parseFloat(canvasStyle.height) - jsLoadingImg.height) / 2 + "px";
655
+ jsLoadingImg.style.position = "absolute";
656
+ }
657
+ return jsLoadingImg;
658
+ },
659
+ //@MODE_END DEV
660
+
661
+ /**
662
+ * Load a single resource as txt.
663
+ * @param {string} url
664
+ * @param {function} [cb] arguments are : err, txt
665
+ */
666
+ loadTxt: function (url, cb) {
667
+ if (!cc._isNodeJs) {
668
+ var xhr = this.getXMLHttpRequest(),
669
+ errInfo = "load " + url + " failed!";
670
+ xhr.open("GET", url, true);
671
+ if (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent)) {
672
+ // IE-specific logic here
673
+ xhr.setRequestHeader("Accept-Charset", "utf-8");
674
+ xhr.onreadystatechange = function () {
675
+ if(xhr.readyState == 4)
676
+ xhr.status == 200 ? cb(null, xhr.responseText) : cb(errInfo);
677
+ };
678
+ } else {
679
+ if (xhr.overrideMimeType) xhr.overrideMimeType("text\/plain; charset=utf-8");
680
+ xhr.onload = function () {
681
+ if(xhr.readyState == 4)
682
+ xhr.status == 200 ? cb(null, xhr.responseText) : cb(errInfo);
683
+ };
684
+ }
685
+ xhr.send(null);
686
+ } else {
687
+ var fs = require("fs");
688
+ fs.readFile(url, function (err, data) {
689
+ err ? cb(err) : cb(null, data.toString());
690
+ });
691
+ }
692
+ },
693
+ _loadTxtSync: function (url) {
694
+ if (!cc._isNodeJs) {
695
+ var xhr = this.getXMLHttpRequest();
696
+ xhr.open("GET", url, false);
697
+ if (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent)) {
698
+ // IE-specific logic here
699
+ xhr.setRequestHeader("Accept-Charset", "utf-8");
700
+ } else {
701
+ if (xhr.overrideMimeType) xhr.overrideMimeType("text\/plain; charset=utf-8");
702
+ }
703
+ xhr.send(null);
704
+ if (!xhr.readyState == 4 || xhr.status != 200) {
705
+ return null;
706
+ }
707
+ return xhr.responseText;
708
+ } else {
709
+ var fs = require("fs");
710
+ return fs.readFileSync(url).toString();
711
+ }
712
+ },
713
+
714
+ loadCsb: function(url, cb){
715
+ var xhr = new XMLHttpRequest();
716
+ xhr.open("GET", url, true);
717
+ xhr.responseType = "arraybuffer";
718
+
719
+ xhr.onload = function () {
720
+ var arrayBuffer = xhr.response; // Note: not oReq.responseText
721
+ if (arrayBuffer) {
722
+ window.msg = arrayBuffer;
723
+ }
724
+ if(xhr.readyState == 4)
725
+ xhr.status == 200 ? cb(null, xhr.response) : cb("load " + url + " failed!");
726
+ };
727
+
728
+ xhr.send(null);
729
+ },
730
+
731
+ /**
732
+ * Load a single resource as json.
733
+ * @param {string} url
734
+ * @param {function} [cb] arguments are : err, json
735
+ */
736
+ loadJson: function (url, cb) {
737
+ this.loadTxt(url, function (err, txt) {
738
+ if (err) {
739
+ cb(err);
740
+ }
741
+ else {
742
+ try {
743
+ var result = JSON.parse(txt);
744
+ }
745
+ catch (e) {
746
+ throw "parse json [" + url + "] failed : " + e;
747
+ return;
748
+ }
749
+ cb(null, result);
750
+ }
751
+ });
752
+ },
753
+
754
+ _checkIsImageURL: function (url) {
755
+ var ext = /(\.png)|(\.jpg)|(\.bmp)|(\.jpeg)|(\.gif)/.exec(url);
756
+ return (ext != null);
757
+ },
758
+ /**
759
+ * Load a single image.
760
+ * @param {!string} url
761
+ * @param {object} [option]
762
+ * @param {function} callback
763
+ * @returns {Image}
764
+ */
765
+ loadImg: function (url, option, callback) {
766
+ var opt = {
767
+ isCrossOrigin: true
768
+ };
769
+ if (callback !== undefined)
770
+ opt.isCrossOrigin = option.isCrossOrigin == null ? opt.isCrossOrigin : option.isCrossOrigin;
771
+ else if (option !== undefined)
772
+ callback = option;
773
+
774
+ var img = this.getRes(url);
775
+ if (img) {
776
+ callback && callback(null, img);
777
+ return img;
778
+ }
779
+
780
+ img = new Image();
781
+ if (opt.isCrossOrigin && location.origin != "file://")
782
+ img.crossOrigin = "Anonymous";
783
+
784
+ var loadCallback = function () {
785
+ this.removeEventListener('load', loadCallback, false);
786
+ this.removeEventListener('error', errorCallback, false);
787
+
788
+ cc.loader.cache[url] = img;
789
+ if (callback)
790
+ callback(null, img);
791
+ };
792
+
793
+ var self = this;
794
+ var errorCallback = function () {
795
+ this.removeEventListener('error', errorCallback, false);
796
+
797
+ if(img.crossOrigin && img.crossOrigin.toLowerCase() == "anonymous"){
798
+ opt.isCrossOrigin = false;
799
+ self.release(url);
800
+ cc.loader.loadImg(url, opt, callback);
801
+ }else{
802
+ typeof callback == "function" && callback("load image failed");
803
+ }
804
+ };
805
+
806
+ cc._addEventListener(img, "load", loadCallback);
807
+ cc._addEventListener(img, "error", errorCallback);
808
+ img.src = url;
809
+ return img;
810
+ },
811
+
812
+ /**
813
+ * Iterator function to load res
814
+ * @param {object} item
815
+ * @param {number} index
816
+ * @param {function} [cb]
817
+ * @returns {*}
818
+ * @private
819
+ */
820
+ _loadResIterator: function (item, index, cb) {
821
+ var self = this, url = null;
822
+ var type = item.type;
823
+ if (type) {
824
+ type = "." + type.toLowerCase();
825
+ url = item.src ? item.src : item.name + type;
826
+ } else {
827
+ url = item;
828
+ type = cc.path.extname(url);
829
+ }
830
+
831
+ var obj = self.getRes(url);
832
+ if (obj)
833
+ return cb(null, obj);
834
+ var loader = null;
835
+ if (type) {
836
+ loader = self._register[type.toLowerCase()];
837
+ }
838
+ if (!loader) {
839
+ cc.error("loader for [" + type + "] not exists!");
840
+ return cb();
841
+ }
842
+ var basePath = loader.getBasePath ? loader.getBasePath() : self.resPath;
843
+ var realUrl = self.getUrl(basePath, url);
844
+ if(cc.game.config["noCache"] && typeof realUrl === "string"){
845
+ if(self._noCacheRex.test(realUrl))
846
+ realUrl += "&_t=" + (new Date() - 0);
847
+ else
848
+ realUrl += "?_t=" + (new Date() - 0);
849
+ }
850
+ loader.load(realUrl, url, item, function (err, data) {
851
+ if (err) {
852
+ cc.log(err);
853
+ self.cache[url] = null;
854
+ delete self.cache[url];
855
+ cb();
856
+ } else {
857
+ self.cache[url] = data;
858
+ cb(null, data);
859
+ }
860
+ });
861
+ },
862
+ _noCacheRex: /\?/,
863
+
864
+ /**
865
+ * Get url with basePath.
866
+ * @param {string} basePath
867
+ * @param {string} [url]
868
+ * @returns {*}
869
+ */
870
+ getUrl: function (basePath, url) {
871
+ var self = this, langPathCache = self._langPathCache, path = cc.path;
872
+ if (basePath !== undefined && url === undefined) {
873
+ url = basePath;
874
+ var type = path.extname(url);
875
+ type = type ? type.toLowerCase() : "";
876
+ var loader = self._register[type];
877
+ if (!loader)
878
+ basePath = self.resPath;
879
+ else
880
+ basePath = loader.getBasePath ? loader.getBasePath() : self.resPath;
881
+ }
882
+ url = cc.path.join(basePath || "", url);
883
+ if (url.match(/[\/(\\\\)]lang[\/(\\\\)]/i)) {
884
+ if (langPathCache[url])
885
+ return langPathCache[url];
886
+ var extname = path.extname(url) || "";
887
+ url = langPathCache[url] = url.substring(0, url.length - extname.length) + "_" + cc.sys.language + extname;
888
+ }
889
+ return url;
890
+ },
891
+
892
+ /**
893
+ * Load resources then call the callback.
894
+ * @param {string} resources
895
+ * @param {function} [option] callback or trigger
896
+ * @param {function|Object} [loadCallback]
897
+ * @return {cc.AsyncPool}
898
+ */
899
+ load : function(resources, option, loadCallback){
900
+ var self = this;
901
+ var len = arguments.length;
902
+ if(len == 0)
903
+ throw "arguments error!";
904
+
905
+ if(len == 3){
906
+ if(typeof option == "function"){
907
+ if(typeof loadCallback == "function")
908
+ option = {trigger : option, cb : loadCallback };
909
+ else
910
+ option = { cb : option, cbTarget : loadCallback};
911
+ }
912
+ }else if(len == 2){
913
+ if(typeof option == "function")
914
+ option = {cb : option};
915
+ }else if(len == 1){
916
+ option = {};
917
+ }
918
+
919
+ if(!(resources instanceof Array))
920
+ resources = [resources];
921
+ var asyncPool = new cc.AsyncPool(
922
+ resources, 0,
923
+ function (value, index, AsyncPoolCallback, aPool) {
924
+ self._loadResIterator(value, index, function (err) {
925
+ if (err)
926
+ return AsyncPoolCallback(err);
927
+ var arr = Array.prototype.slice.call(arguments, 1);
928
+ if (option.trigger)
929
+ option.trigger.call(option.triggerTarget, arr[0], aPool.size, aPool.finishedSize); //call trigger
930
+ AsyncPoolCallback(null, arr[0]);
931
+ });
932
+ },
933
+ option.cb, option.cbTarget);
934
+ asyncPool.flow();
935
+ return asyncPool;
936
+ },
937
+
938
+ _handleAliases: function (fileNames, cb) {
939
+ var self = this, aliases = self._aliases;
940
+ var resList = [];
941
+ for (var key in fileNames) {
942
+ var value = fileNames[key];
943
+ aliases[key] = value;
944
+ resList.push(value);
945
+ }
946
+ this.load(resList, cb);
947
+ },
948
+
949
+ /**
950
+ * <p>
951
+ * Loads alias map from the contents of a filename. <br/>
952
+ * <br/>
953
+ * @note The plist file name should follow the format below: <br/>
954
+ * <?xml version="1.0" encoding="UTF-8"?> <br/>
955
+ * <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <br/>
956
+ * <plist version="1.0"> <br/>
957
+ * <dict> <br/>
958
+ * <key>filenames</key> <br/>
959
+ * <dict> <br/>
960
+ * <key>sounds/click.wav</key> <br/>
961
+ * <string>sounds/click.caf</string> <br/>
962
+ * <key>sounds/endgame.wav</key> <br/>
963
+ * <string>sounds/endgame.caf</string> <br/>
964
+ * <key>sounds/gem-0.wav</key> <br/>
965
+ * <string>sounds/gem-0.caf</string> <br/>
966
+ * </dict> <br/>
967
+ * <key>metadata</key> <br/>
968
+ * <dict> <br/>
969
+ * <key>version</key> <br/>
970
+ * <integer>1</integer> <br/>
971
+ * </dict> <br/>
972
+ * </dict> <br/>
973
+ * </plist> <br/>
974
+ * </p>
975
+ * @param {String} url The plist file name.
976
+ * @param {Function} [callback]
977
+ */
978
+ loadAliases: function (url, callback) {
979
+ var self = this, dict = self.getRes(url);
980
+ if (!dict) {
981
+ self.load(url, function (err, results) {
982
+ self._handleAliases(results[0]["filenames"], callback);
983
+ });
984
+ } else
985
+ self._handleAliases(dict["filenames"], callback);
986
+ },
987
+
988
+ /**
989
+ * Register a resource loader into loader.
990
+ * @param {string} extNames
991
+ * @param {function} loader
992
+ */
993
+ register: function (extNames, loader) {
994
+ if (!extNames || !loader) return;
995
+ var self = this;
996
+ if (typeof extNames == "string")
997
+ return this._register[extNames.trim().toLowerCase()] = loader;
998
+ for (var i = 0, li = extNames.length; i < li; i++) {
999
+ self._register["." + extNames[i].trim().toLowerCase()] = loader;
1000
+ }
1001
+ },
1002
+
1003
+ /**
1004
+ * Get resource data by url.
1005
+ * @param url
1006
+ * @returns {*}
1007
+ */
1008
+ getRes: function (url) {
1009
+ return this.cache[url] || this.cache[this._aliases[url]];
1010
+ },
1011
+
1012
+ /**
1013
+ * Release the cache of resource by url.
1014
+ * @param url
1015
+ */
1016
+ release: function (url) {
1017
+ var cache = this.cache, aliases = this._aliases;
1018
+ delete cache[url];
1019
+ delete cache[aliases[url]];
1020
+ delete aliases[url];
1021
+ },
1022
+
1023
+ /**
1024
+ * Resource cache of all resources.
1025
+ */
1026
+ releaseAll: function () {
1027
+ var locCache = this.cache, aliases = this._aliases;
1028
+ for (var key in locCache)
1029
+ delete locCache[key];
1030
+ for (var key in aliases)
1031
+ delete aliases[key];
1032
+ }
1033
+ };
1034
+ //+++++++++++++++++++++++++something about loader end+++++++++++++++++++++++++++++
1035
+
1036
+ /**
1037
+ * A string tool to construct a string with format string.
1038
+ * for example:
1039
+ * cc.formatStr("a: %d, b: %b", a, b);
1040
+ * cc.formatStr(a, b, c);
1041
+ * @returns {String}
1042
+ */
1043
+ cc.formatStr = function(){
1044
+ var args = arguments;
1045
+ var l = args.length;
1046
+ if(l < 1)
1047
+ return "";
1048
+
1049
+ var str = args[0];
1050
+ var needToFormat = true;
1051
+ if(typeof str == "object"){
1052
+ needToFormat = false;
1053
+ }
1054
+ for(var i = 1; i < l; ++i){
1055
+ var arg = args[i];
1056
+ if(needToFormat){
1057
+ while(true){
1058
+ var result = null;
1059
+ if(typeof arg == "number"){
1060
+ result = str.match(/(%d)|(%s)/);
1061
+ if(result){
1062
+ str = str.replace(/(%d)|(%s)/, arg);
1063
+ break;
1064
+ }
1065
+ }
1066
+ result = str.match(/%s/);
1067
+ if(result)
1068
+ str = str.replace(/%s/, arg);
1069
+ else
1070
+ str += " " + arg;
1071
+ break;
1072
+ }
1073
+ }else
1074
+ str += " " + arg;
1075
+ }
1076
+ return str;
1077
+ };
1078
+
1079
+
1080
+ //+++++++++++++++++++++++++something about window events begin+++++++++++++++++++++++++++
1081
+ (function () {
1082
+ var win = window, hidden, visibilityChange, _undef = "undefined";
1083
+ if (!cc.isUndefined(document.hidden)) {
1084
+ hidden = "hidden";
1085
+ visibilityChange = "visibilitychange";
1086
+ } else if (!cc.isUndefined(document.mozHidden)) {
1087
+ hidden = "mozHidden";
1088
+ visibilityChange = "mozvisibilitychange";
1089
+ } else if (!cc.isUndefined(document.msHidden)) {
1090
+ hidden = "msHidden";
1091
+ visibilityChange = "msvisibilitychange";
1092
+ } else if (!cc.isUndefined(document.webkitHidden)) {
1093
+ hidden = "webkitHidden";
1094
+ visibilityChange = "webkitvisibilitychange";
1095
+ }
1096
+
1097
+ var onHidden = function () {
1098
+ if (cc.eventManager && cc.game._eventHide)
1099
+ cc.eventManager.dispatchEvent(cc.game._eventHide);
1100
+ };
1101
+ var onShow = function () {
1102
+ if (cc.eventManager && cc.game._eventShow)
1103
+ cc.eventManager.dispatchEvent(cc.game._eventShow);
1104
+
1105
+ if(cc.game._intervalId){
1106
+ window.cancelAnimationFrame(cc.game._intervalId);
1107
+
1108
+ cc.game._runMainLoop();
1109
+ }
1110
+ };
1111
+
1112
+ if (hidden) {
1113
+ cc._addEventListener(document, visibilityChange, function () {
1114
+ if (document[hidden]) onHidden();
1115
+ else onShow();
1116
+ }, false);
1117
+ } else {
1118
+ cc._addEventListener(win, "blur", onHidden, false);
1119
+ cc._addEventListener(win, "focus", onShow, false);
1120
+ }
1121
+
1122
+ if(navigator.userAgent.indexOf("MicroMessenger") > -1){
1123
+ win.onfocus = function(){ onShow() };
1124
+ }
1125
+
1126
+ if ("onpageshow" in window && "onpagehide" in window) {
1127
+ cc._addEventListener(win, "pagehide", onHidden, false);
1128
+ cc._addEventListener(win, "pageshow", onShow, false);
1129
+ }
1130
+ win = null;
1131
+ visibilityChange = null;
1132
+ })();
1133
+ //+++++++++++++++++++++++++something about window events end+++++++++++++++++++++++++++++
1134
+
1135
+ //+++++++++++++++++++++++++something about log start++++++++++++++++++++++++++++
1136
+
1137
+ //to make sure the cc.log, cc.warn, cc.error and cc.assert would not throw error before init by debugger mode.
1138
+
1139
+ cc.log = cc.warn = cc.error = cc.assert = function () {
1140
+ };
1141
+
1142
+ //+++++++++++++++++++++++++something about log end+++++++++++++++++++++++++++++
1143
+
1144
+ /**
1145
+ * create a webgl context
1146
+ * @param {HTMLCanvasElement} canvas
1147
+ * @param {Object} opt_attribs
1148
+ * @return {WebGLRenderingContext}
1149
+ */
1150
+ cc.create3DContext = function (canvas, opt_attribs) {
1151
+ var names = ["webgl", "experimental-webgl", "webkit-3d", "moz-webgl"];
1152
+ var context = null;
1153
+ for (var ii = 0; ii < names.length; ++ii) {
1154
+ try {
1155
+ context = canvas.getContext(names[ii], opt_attribs);
1156
+ } catch (e) {
1157
+ }
1158
+ if (context) {
1159
+ break;
1160
+ }
1161
+ }
1162
+ return context;
1163
+ };
1164
+ //+++++++++++++++++++++++++something about sys begin+++++++++++++++++++++++++++++
1165
+ cc._initSys = function (config, CONFIG_KEY) {
1166
+ /**
1167
+ * Canvas of render type
1168
+ * @constant
1169
+ * @type {Number}
1170
+ */
1171
+ cc._RENDER_TYPE_CANVAS = 0;
1172
+
1173
+ /**
1174
+ * WebGL of render type
1175
+ * @constant
1176
+ * @type {Number}
1177
+ */
1178
+ cc._RENDER_TYPE_WEBGL = 1;
1179
+
1180
+ /**
1181
+ * System variables
1182
+ * @namespace
1183
+ * @name cc.sys
1184
+ */
1185
+ cc.sys = {};
1186
+ var sys = cc.sys;
1187
+
1188
+ /**
1189
+ * English language code
1190
+ * @memberof cc.sys
1191
+ * @name LANGUAGE_ENGLISH
1192
+ * @constant
1193
+ * @type {Number}
1194
+ */
1195
+ sys.LANGUAGE_ENGLISH = "en";
1196
+
1197
+ /**
1198
+ * Chinese language code
1199
+ * @memberof cc.sys
1200
+ * @name LANGUAGE_CHINESE
1201
+ * @constant
1202
+ * @type {Number}
1203
+ */
1204
+ sys.LANGUAGE_CHINESE = "zh";
1205
+
1206
+ /**
1207
+ * French language code
1208
+ * @memberof cc.sys
1209
+ * @name LANGUAGE_FRENCH
1210
+ * @constant
1211
+ * @type {Number}
1212
+ */
1213
+ sys.LANGUAGE_FRENCH = "fr";
1214
+
1215
+ /**
1216
+ * Italian language code
1217
+ * @memberof cc.sys
1218
+ * @name LANGUAGE_ITALIAN
1219
+ * @constant
1220
+ * @type {Number}
1221
+ */
1222
+ sys.LANGUAGE_ITALIAN = "it";
1223
+
1224
+ /**
1225
+ * German language code
1226
+ * @memberof cc.sys
1227
+ * @name LANGUAGE_GERMAN
1228
+ * @constant
1229
+ * @type {Number}
1230
+ */
1231
+ sys.LANGUAGE_GERMAN = "de";
1232
+
1233
+ /**
1234
+ * Spanish language code
1235
+ * @memberof cc.sys
1236
+ * @name LANGUAGE_SPANISH
1237
+ * @constant
1238
+ * @type {Number}
1239
+ */
1240
+ sys.LANGUAGE_SPANISH = "es";
1241
+
1242
+ /**
1243
+ * Spanish language code
1244
+ * @memberof cc.sys
1245
+ * @name LANGUAGE_DUTCH
1246
+ * @constant
1247
+ * @type {Number}
1248
+ */
1249
+ sys.LANGUAGE_DUTCH = "du";
1250
+
1251
+ /**
1252
+ * Russian language code
1253
+ * @memberof cc.sys
1254
+ * @name LANGUAGE_RUSSIAN
1255
+ * @constant
1256
+ * @type {Number}
1257
+ */
1258
+ sys.LANGUAGE_RUSSIAN = "ru";
1259
+
1260
+ /**
1261
+ * Korean language code
1262
+ * @memberof cc.sys
1263
+ * @name LANGUAGE_KOREAN
1264
+ * @constant
1265
+ * @type {Number}
1266
+ */
1267
+ sys.LANGUAGE_KOREAN = "ko";
1268
+
1269
+ /**
1270
+ * Japanese language code
1271
+ * @memberof cc.sys
1272
+ * @name LANGUAGE_JAPANESE
1273
+ * @constant
1274
+ * @type {Number}
1275
+ */
1276
+ sys.LANGUAGE_JAPANESE = "ja";
1277
+
1278
+ /**
1279
+ * Hungarian language code
1280
+ * @memberof cc.sys
1281
+ * @name LANGUAGE_HUNGARIAN
1282
+ * @constant
1283
+ * @type {Number}
1284
+ */
1285
+ sys.LANGUAGE_HUNGARIAN = "hu";
1286
+
1287
+ /**
1288
+ * Portuguese language code
1289
+ * @memberof cc.sys
1290
+ * @name LANGUAGE_PORTUGUESE
1291
+ * @constant
1292
+ * @type {Number}
1293
+ */
1294
+ sys.LANGUAGE_PORTUGUESE = "pt";
1295
+
1296
+ /**
1297
+ * Arabic language code
1298
+ * @memberof cc.sys
1299
+ * @name LANGUAGE_ARABIC
1300
+ * @constant
1301
+ * @type {Number}
1302
+ */
1303
+ sys.LANGUAGE_ARABIC = "ar";
1304
+
1305
+ /**
1306
+ * Norwegian language code
1307
+ * @memberof cc.sys
1308
+ * @name LANGUAGE_NORWEGIAN
1309
+ * @constant
1310
+ * @type {Number}
1311
+ */
1312
+ sys.LANGUAGE_NORWEGIAN = "no";
1313
+
1314
+ /**
1315
+ * Polish language code
1316
+ * @memberof cc.sys
1317
+ * @name LANGUAGE_POLISH
1318
+ * @constant
1319
+ * @type {Number}
1320
+ */
1321
+ sys.LANGUAGE_POLISH = "pl";
1322
+
1323
+ /**
1324
+ * @memberof cc.sys
1325
+ * @name OS_WINDOWS
1326
+ * @constant
1327
+ * @type {string}
1328
+ */
1329
+ sys.OS_WINDOWS = "Windows";
1330
+ /**
1331
+ * @memberof cc.sys
1332
+ * @name OS_IOS
1333
+ * @constant
1334
+ * @type {string}
1335
+ */
1336
+ sys.OS_IOS = "iOS";
1337
+ /**
1338
+ * @memberof cc.sys
1339
+ * @name OS_OSX
1340
+ * @constant
1341
+ * @type {string}
1342
+ */
1343
+ sys.OS_OSX = "OS X";
1344
+ /**
1345
+ * @memberof cc.sys
1346
+ * @name OS_UNIX
1347
+ * @constant
1348
+ * @type {string}
1349
+ */
1350
+ sys.OS_UNIX = "UNIX";
1351
+ /**
1352
+ * @memberof cc.sys
1353
+ * @name OS_LINUX
1354
+ * @constant
1355
+ * @type {string}
1356
+ */
1357
+ sys.OS_LINUX = "Linux";
1358
+ /**
1359
+ * @memberof cc.sys
1360
+ * @name OS_ANDROID
1361
+ * @constant
1362
+ * @type {string}
1363
+ */
1364
+ sys.OS_ANDROID = "Android";
1365
+ /**
1366
+ * @memberof cc.sys
1367
+ * @name OS_UNKNOWN
1368
+ * @constant
1369
+ * @type {string}
1370
+ */
1371
+ sys.OS_UNKNOWN = "Unknown";
1372
+
1373
+ /**
1374
+ * @memberof cc.sys
1375
+ * @name WINDOWS
1376
+ * @constant
1377
+ * @default
1378
+ * @type {Number}
1379
+ */
1380
+ sys.WINDOWS = 0;
1381
+ /**
1382
+ * @memberof cc.sys
1383
+ * @name LINUX
1384
+ * @constant
1385
+ * @default
1386
+ * @type {Number}
1387
+ */
1388
+ sys.LINUX = 1;
1389
+ /**
1390
+ * @memberof cc.sys
1391
+ * @name MACOS
1392
+ * @constant
1393
+ * @default
1394
+ * @type {Number}
1395
+ */
1396
+ sys.MACOS = 2;
1397
+ /**
1398
+ * @memberof cc.sys
1399
+ * @name ANDROID
1400
+ * @constant
1401
+ * @default
1402
+ * @type {Number}
1403
+ */
1404
+ sys.ANDROID = 3;
1405
+ /**
1406
+ * @memberof cc.sys
1407
+ * @name IPHONE
1408
+ * @constant
1409
+ * @default
1410
+ * @type {Number}
1411
+ */
1412
+ sys.IPHONE = 4;
1413
+ /**
1414
+ * @memberof cc.sys
1415
+ * @name IPAD
1416
+ * @constant
1417
+ * @default
1418
+ * @type {Number}
1419
+ */
1420
+ sys.IPAD = 5;
1421
+ /**
1422
+ * @memberof cc.sys
1423
+ * @name BLACKBERRY
1424
+ * @constant
1425
+ * @default
1426
+ * @type {Number}
1427
+ */
1428
+ sys.BLACKBERRY = 6;
1429
+ /**
1430
+ * @memberof cc.sys
1431
+ * @name NACL
1432
+ * @constant
1433
+ * @default
1434
+ * @type {Number}
1435
+ */
1436
+ sys.NACL = 7;
1437
+ /**
1438
+ * @memberof cc.sys
1439
+ * @name EMSCRIPTEN
1440
+ * @constant
1441
+ * @default
1442
+ * @type {Number}
1443
+ */
1444
+ sys.EMSCRIPTEN = 8;
1445
+ /**
1446
+ * @memberof cc.sys
1447
+ * @name TIZEN
1448
+ * @constant
1449
+ * @default
1450
+ * @type {Number}
1451
+ */
1452
+ sys.TIZEN = 9;
1453
+ /**
1454
+ * @memberof cc.sys
1455
+ * @name WINRT
1456
+ * @constant
1457
+ * @default
1458
+ * @type {Number}
1459
+ */
1460
+ sys.WINRT = 10;
1461
+ /**
1462
+ * @memberof cc.sys
1463
+ * @name WP8
1464
+ * @constant
1465
+ * @default
1466
+ * @type {Number}
1467
+ */
1468
+ sys.WP8 = 11;
1469
+ /**
1470
+ * @memberof cc.sys
1471
+ * @name MOBILE_BROWSER
1472
+ * @constant
1473
+ * @default
1474
+ * @type {Number}
1475
+ */
1476
+ sys.MOBILE_BROWSER = 100;
1477
+ /**
1478
+ * @memberof cc.sys
1479
+ * @name DESKTOP_BROWSER
1480
+ * @constant
1481
+ * @default
1482
+ * @type {Number}
1483
+ */
1484
+ sys.DESKTOP_BROWSER = 101;
1485
+
1486
+ sys.BROWSER_TYPE_WECHAT = "wechat";
1487
+ sys.BROWSER_TYPE_ANDROID = "androidbrowser";
1488
+ sys.BROWSER_TYPE_IE = "ie";
1489
+ sys.BROWSER_TYPE_QQ = "qqbrowser";
1490
+ sys.BROWSER_TYPE_MOBILE_QQ = "mqqbrowser";
1491
+ sys.BROWSER_TYPE_UC = "ucbrowser";
1492
+ sys.BROWSER_TYPE_360 = "360browser";
1493
+ sys.BROWSER_TYPE_BAIDU_APP = "baiduboxapp";
1494
+ sys.BROWSER_TYPE_BAIDU = "baidubrowser";
1495
+ sys.BROWSER_TYPE_MAXTHON = "maxthon";
1496
+ sys.BROWSER_TYPE_OPERA = "opera";
1497
+ sys.BROWSER_TYPE_OUPENG = "oupeng";
1498
+ sys.BROWSER_TYPE_MIUI = "miuibrowser";
1499
+ sys.BROWSER_TYPE_FIREFOX = "firefox";
1500
+ sys.BROWSER_TYPE_SAFARI = "safari";
1501
+ sys.BROWSER_TYPE_CHROME = "chrome";
1502
+ sys.BROWSER_TYPE_LIEBAO = "liebao";
1503
+ sys.BROWSER_TYPE_QZONE = "qzone";
1504
+ sys.BROWSER_TYPE_SOUGOU = "sogou";
1505
+ sys.BROWSER_TYPE_UNKNOWN = "unknown";
1506
+
1507
+ /**
1508
+ * Is native ? This is set to be true in jsb auto.
1509
+ * @memberof cc.sys
1510
+ * @name isNative
1511
+ * @type {Boolean}
1512
+ */
1513
+ sys.isNative = false;
1514
+
1515
+ var browserSupportWebGL = [sys.BROWSER_TYPE_BAIDU, sys.BROWSER_TYPE_OPERA, sys.BROWSER_TYPE_FIREFOX, sys.BROWSER_TYPE_CHROME, sys.BROWSER_TYPE_SAFARI];
1516
+ var osSupportWebGL = [sys.OS_IOS, sys.OS_WINDOWS, sys.OS_OSX, sys.OS_LINUX];
1517
+ var multipleAudioWhiteList = [
1518
+ sys.BROWSER_TYPE_BAIDU, sys.BROWSER_TYPE_OPERA, sys.BROWSER_TYPE_FIREFOX, sys.BROWSER_TYPE_CHROME, sys.BROWSER_TYPE_BAIDU_APP,
1519
+ sys.BROWSER_TYPE_SAFARI, sys.BROWSER_TYPE_UC, sys.BROWSER_TYPE_QQ, sys.BROWSER_TYPE_MOBILE_QQ, sys.BROWSER_TYPE_IE
1520
+ ];
1521
+
1522
+ var win = window, nav = win.navigator, doc = document, docEle = doc.documentElement;
1523
+ var ua = nav.userAgent.toLowerCase();
1524
+
1525
+ /**
1526
+ * Indicate whether system is mobile system
1527
+ * @memberof cc.sys
1528
+ * @name isMobile
1529
+ * @type {Boolean}
1530
+ */
1531
+ sys.isMobile = ua.indexOf('mobile') != -1 || ua.indexOf('android') != -1;
1532
+
1533
+ /**
1534
+ * Indicate the running platform
1535
+ * @memberof cc.sys
1536
+ * @name platform
1537
+ * @type {Number}
1538
+ */
1539
+ sys.platform = sys.isMobile ? sys.MOBILE_BROWSER : sys.DESKTOP_BROWSER;
1540
+
1541
+ var currLanguage = nav.language;
1542
+ currLanguage = currLanguage ? currLanguage : nav.browserLanguage;
1543
+ currLanguage = currLanguage ? currLanguage.split("-")[0] : sys.LANGUAGE_ENGLISH;
1544
+
1545
+ /**
1546
+ * Indicate the current language of the running system
1547
+ * @memberof cc.sys
1548
+ * @name language
1549
+ * @type {String}
1550
+ */
1551
+ sys.language = currLanguage;
1552
+
1553
+ var browserType = sys.BROWSER_TYPE_UNKNOWN;
1554
+ var browserTypes = ua.match(/sogou|qzone|liebao|micromessenger|qqbrowser|ucbrowser|360 aphone|360browser|baiduboxapp|baidubrowser|maxthon|trident|oupeng|opera|miuibrowser|firefox/i)
1555
+ || ua.match(/chrome|safari/i);
1556
+ if (browserTypes && browserTypes.length > 0) {
1557
+ browserType = browserTypes[0];
1558
+ if (browserType == 'micromessenger') {
1559
+ browserType = sys.BROWSER_TYPE_WECHAT;
1560
+ } else if (browserType === "safari" && (ua.match(/android.*applewebkit/)))
1561
+ browserType = sys.BROWSER_TYPE_ANDROID;
1562
+ else if (browserType == "trident") browserType = sys.BROWSER_TYPE_IE;
1563
+ else if (browserType == "360 aphone") browserType = sys.BROWSER_TYPE_360;
1564
+ }
1565
+ /**
1566
+ * Indicate the running browser type
1567
+ * @memberof cc.sys
1568
+ * @name browserType
1569
+ * @type {String}
1570
+ */
1571
+ sys.browserType = browserType;
1572
+
1573
+ // Get the os of system
1574
+ var iOS = ( ua.match(/(iPad|iPhone|iPod)/i) ? true : false );
1575
+ var isAndroid = ua.match(/android/i) || nav.platform.match(/android/i) ? true : false;
1576
+ var osName = sys.OS_UNKNOWN;
1577
+ if (nav.appVersion.indexOf("Win") != -1) osName = sys.OS_WINDOWS;
1578
+ else if (iOS) osName = sys.OS_IOS;
1579
+ else if (nav.appVersion.indexOf("Mac") != -1) osName = sys.OS_OSX;
1580
+ else if (nav.appVersion.indexOf("X11") != -1 && nav.appVersion.indexOf("Linux") == -1) osName = sys.OS_UNIX;
1581
+ else if (isAndroid) osName = sys.OS_ANDROID;
1582
+ else if (nav.appVersion.indexOf("Linux") != -1) osName = sys.OS_LINUX;
1583
+
1584
+ /**
1585
+ * Indicate the running os name
1586
+ * @memberof cc.sys
1587
+ * @name os
1588
+ * @type {String}
1589
+ */
1590
+ sys.os = osName;
1591
+
1592
+ sys._supportMultipleAudio = multipleAudioWhiteList.indexOf(sys.browserType) > -1;
1593
+
1594
+
1595
+ //++++++++++++++++++something about cc._renderTYpe and cc._supportRender begin++++++++++++++++++++++++++++
1596
+ var userRenderMode = parseInt(config[CONFIG_KEY.renderMode]);
1597
+ var renderType = cc._RENDER_TYPE_WEBGL;
1598
+ var tempCanvas = cc.newElement("Canvas");
1599
+ cc._supportRender = true;
1600
+ var notSupportGL = !window.WebGLRenderingContext || browserSupportWebGL.indexOf(sys.browserType) == -1 || osSupportWebGL.indexOf(sys.os) == -1;
1601
+ if (userRenderMode === 1 || (userRenderMode === 0 && notSupportGL) || (location.origin == "file://")) {
1602
+ renderType = cc._RENDER_TYPE_CANVAS;
1603
+ }
1604
+
1605
+ sys._canUseCanvasNewBlendModes = function(){
1606
+ var canvas = document.createElement('canvas');
1607
+ canvas.width = 1;
1608
+ canvas.height = 1;
1609
+ var context = canvas.getContext('2d');
1610
+ context.fillStyle = '#000';
1611
+ context.fillRect(0,0,1,1);
1612
+ context.globalCompositeOperation = 'multiply';
1613
+
1614
+ var canvas2 = document.createElement('canvas');
1615
+ canvas2.width = 1;
1616
+ canvas2.height = 1;
1617
+ var context2 = canvas2.getContext('2d');
1618
+ context2.fillStyle = '#fff';
1619
+ context2.fillRect(0,0,1,1);
1620
+
1621
+ context.drawImage(canvas2, 0, 0, 1, 1);
1622
+
1623
+ return context.getImageData(0,0,1,1).data[0] === 0;
1624
+ };
1625
+
1626
+ //Whether or not the Canvas BlendModes are supported.
1627
+ sys._supportCanvasNewBlendModes = sys._canUseCanvasNewBlendModes();
1628
+
1629
+ if (renderType == cc._RENDER_TYPE_WEBGL) {
1630
+ if (!win.WebGLRenderingContext
1631
+ || !cc.create3DContext(tempCanvas, {'stencil': true, 'preserveDrawingBuffer': true })) {
1632
+ if (userRenderMode == 0) renderType = cc._RENDER_TYPE_CANVAS;
1633
+ else cc._supportRender = false;
1634
+ }
1635
+ }
1636
+
1637
+ if (renderType == cc._RENDER_TYPE_CANVAS) {
1638
+ try {
1639
+ tempCanvas.getContext("2d");
1640
+ } catch (e) {
1641
+ cc._supportRender = false;
1642
+ }
1643
+ }
1644
+ cc._renderType = renderType;
1645
+ //++++++++++++++++++something about cc._renderType and cc._supportRender end++++++++++++++++++++++++++++++
1646
+
1647
+ // check if browser supports Web Audio
1648
+ // check Web Audio's context
1649
+ try {
1650
+ sys._supportWebAudio = !!(win.AudioContext || win.webkitAudioContext || win.mozAudioContext);
1651
+ } catch (e) {
1652
+ sys._supportWebAudio = false;
1653
+ }
1654
+
1655
+ /**
1656
+ * cc.sys.localStorage is a local storage component.
1657
+ * @memberof cc.sys
1658
+ * @name localStorage
1659
+ * @type {Object}
1660
+ */
1661
+ try {
1662
+ var localStorage = sys.localStorage = win.localStorage;
1663
+ localStorage.setItem("storage", "");
1664
+ localStorage.removeItem("storage");
1665
+ localStorage = null;
1666
+ } catch (e) {
1667
+ if (e.name === "SECURITY_ERR" || e.name === "QuotaExceededError") {
1668
+ cc.warn("Warning: localStorage isn't enabled. Please confirm browser cookie or privacy option");
1669
+ }
1670
+ sys.localStorage = function () {
1671
+ };
1672
+ }
1673
+
1674
+ var capabilities = sys.capabilities = {"canvas": true};
1675
+ if (cc._renderType == cc._RENDER_TYPE_WEBGL)
1676
+ capabilities["opengl"] = true;
1677
+ if (docEle['ontouchstart'] !== undefined || doc['ontouchstart'] !== undefined || nav.msPointerEnabled)
1678
+ capabilities["touches"] = true;
1679
+ if (docEle['onmouseup'] !== undefined)
1680
+ capabilities["mouse"] = true;
1681
+ if (docEle['onkeyup'] !== undefined)
1682
+ capabilities["keyboard"] = true;
1683
+ if (win.DeviceMotionEvent || win.DeviceOrientationEvent)
1684
+ capabilities["accelerometer"] = true;
1685
+
1686
+ /**
1687
+ * Forces the garbage collection, only available in JSB
1688
+ * @memberof cc.sys
1689
+ * @name garbageCollect
1690
+ * @function
1691
+ */
1692
+ sys.garbageCollect = function () {
1693
+ // N/A in cocos2d-html5
1694
+ };
1695
+
1696
+ /**
1697
+ * Dumps rooted objects, only available in JSB
1698
+ * @memberof cc.sys
1699
+ * @name dumpRoot
1700
+ * @function
1701
+ */
1702
+ sys.dumpRoot = function () {
1703
+ // N/A in cocos2d-html5
1704
+ };
1705
+
1706
+ /**
1707
+ * Restart the JS VM, only available in JSB
1708
+ * @memberof cc.sys
1709
+ * @name restartVM
1710
+ * @function
1711
+ */
1712
+ sys.restartVM = function () {
1713
+ // N/A in cocos2d-html5
1714
+ };
1715
+
1716
+ /**
1717
+ * Clean a script in the JS VM, only available in JSB
1718
+ * @memberof cc.sys
1719
+ * @name cleanScript
1720
+ * @param {String} jsfile
1721
+ * @function
1722
+ */
1723
+ sys.cleanScript = function (jsfile) {
1724
+ // N/A in cocos2d-html5
1725
+ };
1726
+
1727
+ /**
1728
+ * Dump system informations
1729
+ * @memberof cc.sys
1730
+ * @name dump
1731
+ * @function
1732
+ */
1733
+ sys.dump = function () {
1734
+ var self = this;
1735
+ var str = "";
1736
+ str += "isMobile : " + self.isMobile + "\r\n";
1737
+ str += "language : " + self.language + "\r\n";
1738
+ str += "browserType : " + self.browserType + "\r\n";
1739
+ str += "capabilities : " + JSON.stringify(self.capabilities) + "\r\n";
1740
+ str += "os : " + self.os + "\r\n";
1741
+ str += "platform : " + self.platform + "\r\n";
1742
+ cc.log(str);
1743
+ }
1744
+ };
1745
+
1746
+ //+++++++++++++++++++++++++something about sys end+++++++++++++++++++++++++++++
1747
+
1748
+ //+++++++++++++++++++++++++something about CCGame begin+++++++++++++++++++++++++++
1749
+
1750
+ /**
1751
+ * Device oriented vertically, home button on the bottom
1752
+ * @constant
1753
+ * @type {Number}
1754
+ */
1755
+ cc.ORIENTATION_PORTRAIT = 0;
1756
+
1757
+ /**
1758
+ * Device oriented vertically, home button on the top
1759
+ * @constant
1760
+ * @type {Number}
1761
+ */
1762
+ cc.ORIENTATION_PORTRAIT_UPSIDE_DOWN = 1;
1763
+
1764
+ /**
1765
+ * Device oriented horizontally, home button on the right
1766
+ * @constant
1767
+ * @type {Number}
1768
+ */
1769
+ cc.ORIENTATION_LANDSCAPE_LEFT = 2;
1770
+
1771
+ /**
1772
+ * Device oriented horizontally, home button on the left
1773
+ * @constant
1774
+ * @type {Number}
1775
+ */
1776
+ cc.ORIENTATION_LANDSCAPE_RIGHT = 3;
1777
+
1778
+ /**
1779
+ * drawing primitive of game engine
1780
+ * @type {cc.DrawingPrimitive}
1781
+ */
1782
+ cc._drawingUtil = null;
1783
+
1784
+ /**
1785
+ * main Canvas 2D/3D Context of game engine
1786
+ * @type {CanvasRenderingContext2D|WebGLRenderingContext}
1787
+ */
1788
+ cc._renderContext = null;
1789
+
1790
+ /**
1791
+ * main Canvas of game engine
1792
+ * @type {HTMLCanvasElement}
1793
+ */
1794
+ cc._canvas = null;
1795
+
1796
+ /**
1797
+ * This Div element contain all game canvas
1798
+ * @type {HTMLDivElement}
1799
+ */
1800
+ cc._gameDiv = null;
1801
+
1802
+ cc._rendererInitialized = false;
1803
+ /**
1804
+ * <p>
1805
+ * setup game main canvas,renderContext,gameDiv and drawingUtil with argument <br/>
1806
+ * <br/>
1807
+ * can receive follow type of arguemnt: <br/>
1808
+ * - empty: create a canvas append to document's body, and setup other option <br/>
1809
+ * - string: search the element by document.getElementById(), <br/>
1810
+ * if this element is HTMLCanvasElement, set this element as main canvas of engine, and set it's ParentNode as cc._gameDiv.<br/>
1811
+ * if this element is HTMLDivElement, set it's ParentNode to cc._gameDiv, and create a canvas as main canvas of engine. <br/>
1812
+ * </p>
1813
+ * @function
1814
+ * @example
1815
+ * //setup with null
1816
+ * cc._setup();
1817
+ *
1818
+ * // setup with HTMLCanvasElement, gameCanvas is Canvas element
1819
+ * // declare like this: <canvas id="gameCanvas" width="800" height="450"></canvas>
1820
+ * cc._setup("gameCanvas");
1821
+ *
1822
+ * //setup with HTMLDivElement, gameDiv is Div element
1823
+ * // declare like this: <div id="Cocos2dGameContainer" width="800" height="450"></div>
1824
+ * cc._setup("Cocos2dGameContainer");
1825
+ */
1826
+ cc._setupCalled = false;
1827
+ cc._setup = function (el, width, height) {
1828
+ // Avoid setup to be called twice.
1829
+ if (cc._setupCalled) return;
1830
+ else cc._setupCalled = true;
1831
+ var win = window;
1832
+ var element = cc.$(el) || cc.$('#' + el);
1833
+ var localCanvas, localContainer, localConStyle;
1834
+
1835
+ cc.game._setAnimFrame();
1836
+
1837
+ if (element.tagName == "CANVAS") {
1838
+ width = width || element.width;
1839
+ height = height || element.height;
1840
+
1841
+ //it is already a canvas, we wrap it around with a div
1842
+ localContainer = cc.container = cc.newElement("DIV");
1843
+ localCanvas = cc._canvas = element;
1844
+ localCanvas.parentNode.insertBefore(localContainer, localCanvas);
1845
+ localCanvas.appendTo(localContainer);
1846
+ localContainer.setAttribute('id', 'Cocos2dGameContainer');
1847
+ } else {//we must make a new canvas and place into this element
1848
+ if (element.tagName != "DIV") {
1849
+ cc.log("Warning: target element is not a DIV or CANVAS");
1850
+ }
1851
+ width = width || element.clientWidth;
1852
+ height = height || element.clientHeight;
1853
+ localContainer = cc.container = element;
1854
+ localCanvas = cc._canvas = cc.$(cc.newElement("CANVAS"));
1855
+ element.appendChild(localCanvas);
1856
+ }
1857
+
1858
+ localCanvas.addClass("gameCanvas");
1859
+ localCanvas.setAttribute("width", width || 480);
1860
+ localCanvas.setAttribute("height", height || 320);
1861
+ localCanvas.setAttribute("tabindex", 99);
1862
+ localCanvas.style.outline = "none";
1863
+ localConStyle = localContainer.style;
1864
+ localConStyle.width = (width || 480) + "px";
1865
+ localConStyle.height = (height || 320) + "px";
1866
+ localConStyle.margin = "0 auto";
1867
+
1868
+ localConStyle.position = 'relative';
1869
+ localConStyle.overflow = 'hidden';
1870
+ localContainer.top = '100%';
1871
+
1872
+ if (cc._renderType == cc._RENDER_TYPE_WEBGL)
1873
+ cc._renderContext = cc.webglContext = cc.create3DContext(localCanvas, {
1874
+ 'stencil': true,
1875
+ 'preserveDrawingBuffer': true,
1876
+ 'antialias': !cc.sys.isMobile,
1877
+ 'alpha': false});
1878
+ if (cc._renderContext) {
1879
+ win.gl = cc._renderContext; // global variable declared in CCMacro.js
1880
+ cc._drawingUtil = new cc.DrawingPrimitiveWebGL(cc._renderContext);
1881
+ cc._rendererInitialized = true;
1882
+ cc.textureCache._initializingRenderer();
1883
+ cc.shaderCache._init();
1884
+ } else {
1885
+ cc._renderContext = new cc.CanvasContextWrapper(localCanvas.getContext("2d"));
1886
+ cc._drawingUtil = cc.DrawingPrimitiveCanvas ? new cc.DrawingPrimitiveCanvas(cc._renderContext) : null;
1887
+ }
1888
+
1889
+ cc._gameDiv = localContainer;
1890
+ cc.log(cc.ENGINE_VERSION);
1891
+ cc._setContextMenuEnable(false);
1892
+
1893
+ if (cc.sys.isMobile) {
1894
+ var fontStyle = cc.newElement("style");
1895
+ fontStyle.type = "text/css";
1896
+ document.body.appendChild(fontStyle);
1897
+
1898
+ fontStyle.textContent = "body,canvas,div{ -moz-user-select: none;-webkit-user-select: none;-ms-user-select: none;-khtml-user-select: none;"
1899
+ + "-webkit-tap-highlight-color:rgba(0,0,0,0);}";
1900
+ }
1901
+
1902
+ // Init singletons
1903
+
1904
+ /**
1905
+ * @type {cc.EGLView}
1906
+ * @name cc.view
1907
+ * cc.view is the shared view object.
1908
+ */
1909
+ cc.view = cc.EGLView._getInstance();
1910
+ // register system events
1911
+ cc.inputManager.registerSystemEvent(cc._canvas);
1912
+
1913
+ /**
1914
+ * @type {cc.Director}
1915
+ * @name cc.director
1916
+ */
1917
+ cc.director = cc.Director._getInstance();
1918
+ if (cc.director.setOpenGLView)
1919
+ cc.director.setOpenGLView(cc.view);
1920
+ /**
1921
+ * @type {cc.Size}
1922
+ * @name cc.winSize
1923
+ * cc.winSize is the alias object for the size of the current game window.
1924
+ */
1925
+ cc.winSize = cc.director.getWinSize();
1926
+
1927
+ // Parsers
1928
+ cc.saxParser = new cc.SAXParser();
1929
+ /**
1930
+ * @type {cc.PlistParser}
1931
+ * @name cc.plistParser
1932
+ * A Plist Parser
1933
+ */
1934
+ cc.plistParser = new cc.PlistParser();
1935
+ };
1936
+
1937
+ cc._checkWebGLRenderMode = function () {
1938
+ if (cc._renderType !== cc._RENDER_TYPE_WEBGL)
1939
+ throw "This feature supports WebGL render mode only.";
1940
+ };
1941
+
1942
+ cc._isContextMenuEnable = false;
1943
+ /**
1944
+ * enable/disable contextMenu for Canvas
1945
+ * @param {Boolean} enabled
1946
+ */
1947
+ cc._setContextMenuEnable = function (enabled) {
1948
+ cc._isContextMenuEnable = enabled;
1949
+ cc._canvas.oncontextmenu = function () {
1950
+ if (!cc._isContextMenuEnable) return false;
1951
+ };
1952
+ };
1953
+
1954
+ /**
1955
+ * An object to boot the game.
1956
+ * @class
1957
+ * @name cc.game
1958
+ */
1959
+ cc.game = /** @lends cc.game# */{
1960
+ DEBUG_MODE_NONE: 0,
1961
+ DEBUG_MODE_INFO: 1,
1962
+ DEBUG_MODE_WARN: 2,
1963
+ DEBUG_MODE_ERROR: 3,
1964
+ DEBUG_MODE_INFO_FOR_WEB_PAGE: 4,
1965
+ DEBUG_MODE_WARN_FOR_WEB_PAGE: 5,
1966
+ DEBUG_MODE_ERROR_FOR_WEB_PAGE: 6,
1967
+
1968
+ EVENT_HIDE: "game_on_hide",
1969
+ EVENT_SHOW: "game_on_show",
1970
+ _eventHide: null,
1971
+ _eventShow: null,
1972
+ _onBeforeStartArr: [],
1973
+
1974
+ /**
1975
+ * Key of config
1976
+ * @constant
1977
+ * @type {Object}
1978
+ */
1979
+ CONFIG_KEY: {
1980
+ engineDir: "engineDir",
1981
+ dependencies: "dependencies",
1982
+ debugMode: "debugMode",
1983
+ showFPS: "showFPS",
1984
+ frameRate: "frameRate",
1985
+ id: "id",
1986
+ renderMode: "renderMode",
1987
+ jsList: "jsList",
1988
+ classReleaseMode: "classReleaseMode"
1989
+ },
1990
+
1991
+ _prepareCalled: false,//whether the prepare function has been called
1992
+ _prepared: false,//whether the engine has prepared
1993
+ _paused: true,//whether the game is paused
1994
+
1995
+ _intervalId: null,//interval target of main
1996
+
1997
+ _lastTime: null,
1998
+ _frameTime: null,
1999
+
2000
+ /**
2001
+ * Config of game
2002
+ * @type {Object}
2003
+ */
2004
+ config: null,
2005
+
2006
+ /**
2007
+ * Callback when the scripts of engine have been load.
2008
+ * @type {Function}
2009
+ */
2010
+ onStart: null,
2011
+
2012
+ /**
2013
+ * Callback when game exits.
2014
+ * @type {Function}
2015
+ */
2016
+ onStop: null,
2017
+
2018
+ /**
2019
+ * Set frameRate of game.
2020
+ * @param frameRate
2021
+ */
2022
+ setFrameRate: function (frameRate) {
2023
+ var self = this, config = self.config, CONFIG_KEY = self.CONFIG_KEY;
2024
+ config[CONFIG_KEY.frameRate] = frameRate;
2025
+ if (self._intervalId)
2026
+ window.cancelAnimationFrame(self._intervalId);
2027
+ self._paused = true;
2028
+ self._setAnimFrame();
2029
+ self._runMainLoop();
2030
+ },
2031
+ _setAnimFrame: function () {
2032
+ this._lastTime = new Date();
2033
+ this._frameTime = 1000 / cc.game.config[cc.game.CONFIG_KEY.frameRate];
2034
+ if((cc.sys.os === cc.sys.OS_IOS && cc.sys.browserType === cc.sys.BROWSER_TYPE_WECHAT) || cc.game.config[cc.game.CONFIG_KEY.frameRate] != 60) {
2035
+ window.requestAnimFrame = this._stTime;
2036
+ window.cancelAnimationFrame = this._ctTime;
2037
+ }
2038
+ else {
2039
+ window.requestAnimFrame = window.requestAnimationFrame ||
2040
+ window.webkitRequestAnimationFrame ||
2041
+ window.mozRequestAnimationFrame ||
2042
+ window.oRequestAnimationFrame ||
2043
+ window.msRequestAnimationFrame ||
2044
+ this._stTime;
2045
+ window.cancelAnimationFrame = window.cancelAnimationFrame ||
2046
+ window.cancelRequestAnimationFrame ||
2047
+ window.msCancelRequestAnimationFrame ||
2048
+ window.mozCancelRequestAnimationFrame ||
2049
+ window.oCancelRequestAnimationFrame ||
2050
+ window.webkitCancelRequestAnimationFrame ||
2051
+ window.msCancelAnimationFrame ||
2052
+ window.mozCancelAnimationFrame ||
2053
+ window.webkitCancelAnimationFrame ||
2054
+ window.oCancelAnimationFrame ||
2055
+ this._ctTime;
2056
+ }
2057
+ },
2058
+ _stTime: function(callback){
2059
+ var currTime = new Date().getTime();
2060
+ var timeToCall = Math.max(0, cc.game._frameTime - (currTime - cc.game._lastTime));
2061
+ var id = window.setTimeout(function() { callback(); },
2062
+ timeToCall);
2063
+ cc.game._lastTime = currTime + timeToCall;
2064
+ return id;
2065
+ },
2066
+ _ctTime: function(id){
2067
+ window.clearTimeout(id);
2068
+ },
2069
+ //Run game.
2070
+ _runMainLoop: function () {
2071
+ var self = this, callback, config = self.config, CONFIG_KEY = self.CONFIG_KEY,
2072
+ director = cc.director;
2073
+
2074
+ director.setDisplayStats(config[CONFIG_KEY.showFPS]);
2075
+
2076
+ callback = function () {
2077
+ if (!self._paused) {
2078
+ director.mainLoop();
2079
+ if(self._intervalId)
2080
+ window.cancelAnimationFrame(self._intervalId);
2081
+ self._intervalId = window.requestAnimFrame(callback);
2082
+ }
2083
+ };
2084
+
2085
+ window.requestAnimFrame(callback);
2086
+ self._paused = false;
2087
+ },
2088
+
2089
+ /**
2090
+ * Restart game.
2091
+ */
2092
+ restart: function () {
2093
+ cc.director.popToSceneStackLevel(0);
2094
+ // Clean up audio
2095
+ cc.audioEngine && cc.audioEngine.end();
2096
+
2097
+ cc.game.onStart();
2098
+ },
2099
+
2100
+ /**
2101
+ * Run game.
2102
+ */
2103
+ run: function (id) {
2104
+ var self = this;
2105
+ var _run = function () {
2106
+ if (id) {
2107
+ self.config[self.CONFIG_KEY.id] = id;
2108
+ }
2109
+ if (!self._prepareCalled) {
2110
+ self.prepare(function () {
2111
+ self._prepared = true;
2112
+ });
2113
+ }
2114
+ if (cc._supportRender) {
2115
+ self._checkPrepare = setInterval(function () {
2116
+ if (self._prepared) {
2117
+ cc._setup(self.config[self.CONFIG_KEY.id]);
2118
+ self._runMainLoop();
2119
+ self._eventHide = self._eventHide || new cc.EventCustom(self.EVENT_HIDE);
2120
+ self._eventHide.setUserData(self);
2121
+ self._eventShow = self._eventShow || new cc.EventCustom(self.EVENT_SHOW);
2122
+ self._eventShow.setUserData(self);
2123
+ self.onStart();
2124
+ clearInterval(self._checkPrepare);
2125
+ }
2126
+ }, 10);
2127
+ }
2128
+ };
2129
+ document.body ?
2130
+ _run() :
2131
+ cc._addEventListener(window, 'load', function () {
2132
+ this.removeEventListener('load', arguments.callee, false);
2133
+ _run();
2134
+ }, false);
2135
+ },
2136
+
2137
+ _initConfig: function () {
2138
+ var self = this, CONFIG_KEY = self.CONFIG_KEY;
2139
+ var _init = function (cfg) {
2140
+ cfg[CONFIG_KEY.engineDir] = cfg[CONFIG_KEY.engineDir] || "frameworks/cocos2d-html5";
2141
+ if(cfg[CONFIG_KEY.debugMode] == null)
2142
+ cfg[CONFIG_KEY.debugMode] = 0;
2143
+ cfg[CONFIG_KEY.frameRate] = cfg[CONFIG_KEY.frameRate] || 60;
2144
+ if(cfg[CONFIG_KEY.renderMode] == null)
2145
+ cfg[CONFIG_KEY.renderMode] = 1;
2146
+ return cfg;
2147
+ };
2148
+ if (document["ccConfig"]) {
2149
+ self.config = _init(document["ccConfig"]);
2150
+ } else {
2151
+ try {
2152
+ var cocos_script = document.getElementsByTagName('script');
2153
+ for(var i=0;i<cocos_script.length;i++){
2154
+ var _t = cocos_script[i].getAttribute('cocos');
2155
+ if(_t == '' || _t){break;}
2156
+ }
2157
+ var _src, txt, _resPath;
2158
+ if(i < cocos_script.length){
2159
+ _src = cocos_script[i].src;
2160
+ if(_src){
2161
+ _resPath = /(.*)\//.exec(_src)[0];
2162
+ cc.loader.resPath = _resPath;
2163
+ _src = cc.path.join(_resPath, 'project.json');
2164
+ }
2165
+ txt = cc.loader._loadTxtSync(_src);
2166
+ }
2167
+ if(!txt){
2168
+ txt = cc.loader._loadTxtSync("project.json");
2169
+ }
2170
+ var data = JSON.parse(txt);
2171
+ self.config = _init(data || {});
2172
+ } catch (e) {
2173
+ cc.log("Failed to read or parse project.json");
2174
+ self.config = _init({});
2175
+ }
2176
+ }
2177
+ //init debug move to CCDebugger
2178
+ cc._initSys(self.config, CONFIG_KEY);
2179
+ },
2180
+
2181
+ //cache for js and module that has added into jsList to be loaded.
2182
+ _jsAddedCache: {},
2183
+ _getJsListOfModule: function (moduleMap, moduleName, dir) {
2184
+ var jsAddedCache = this._jsAddedCache;
2185
+ if (jsAddedCache[moduleName]) return null;
2186
+ dir = dir || "";
2187
+ var jsList = [];
2188
+ var tempList = moduleMap[moduleName];
2189
+ if (!tempList) throw "can not find module [" + moduleName + "]";
2190
+ var ccPath = cc.path;
2191
+ for (var i = 0, li = tempList.length; i < li; i++) {
2192
+ var item = tempList[i];
2193
+ if (jsAddedCache[item]) continue;
2194
+ var extname = ccPath.extname(item);
2195
+ if (!extname) {
2196
+ var arr = this._getJsListOfModule(moduleMap, item, dir);
2197
+ if (arr) jsList = jsList.concat(arr);
2198
+ } else if (extname.toLowerCase() == ".js") jsList.push(ccPath.join(dir, item));
2199
+ jsAddedCache[item] = 1;
2200
+ }
2201
+ return jsList;
2202
+ },
2203
+ /**
2204
+ * Prepare game.
2205
+ * @param cb
2206
+ */
2207
+ prepare: function (cb) {
2208
+ var self = this;
2209
+ var config = self.config, CONFIG_KEY = self.CONFIG_KEY, engineDir = config[CONFIG_KEY.engineDir], loader = cc.loader;
2210
+ if (!cc._supportRender) {
2211
+ throw "The renderer doesn't support the renderMode " + config[CONFIG_KEY.renderMode];
2212
+ }
2213
+ self._prepareCalled = true;
2214
+
2215
+ var jsList = config[CONFIG_KEY.jsList] || [];
2216
+ if (cc.Class) {//is single file
2217
+ //load user's jsList only
2218
+ loader.loadJsWithImg("", jsList, function (err) {
2219
+ if (err) throw err;
2220
+ self._prepared = true;
2221
+ if (cb) cb();
2222
+ });
2223
+ } else {
2224
+ //load cc's jsList first
2225
+ var ccModulesPath = cc.path.join(engineDir, "moduleConfig.json");
2226
+ loader.loadJson(ccModulesPath, function (err, modulesJson) {
2227
+ if (err) throw err;
2228
+ var modules = config["modules"] || [];
2229
+ var moduleMap = modulesJson["module"];
2230
+ var newJsList = [];
2231
+ if (cc._renderType == cc._RENDER_TYPE_WEBGL) modules.splice(0, 0, "shaders");
2232
+ else if (modules.indexOf("core") < 0) modules.splice(0, 0, "core");
2233
+ for (var i = 0, li = modules.length; i < li; i++) {
2234
+ var arr = self._getJsListOfModule(moduleMap, modules[i], engineDir);
2235
+ if (arr) newJsList = newJsList.concat(arr);
2236
+ }
2237
+ newJsList = newJsList.concat(jsList);
2238
+ cc.loader.loadJsWithImg(newJsList, function (err) {
2239
+ if (err) throw err;
2240
+ self._prepared = true;
2241
+ if (cb) cb();
2242
+ });
2243
+ });
2244
+ }
2245
+ }
2246
+ };
2247
+ cc.game._initConfig();
2248
+ //+++++++++++++++++++++++++something about CCGame end+++++++++++++++++++++++++++++
2249
+
2250
+ Function.prototype.bind = Function.prototype.bind || function (oThis) {
2251
+ if (!cc.isFunction(this)) {
2252
+ // closest thing possible to the ECMAScript 5
2253
+ // internal IsCallable function
2254
+ throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
2255
+ }
2256
+
2257
+ var aArgs = Array.prototype.slice.call(arguments, 1),
2258
+ fToBind = this,
2259
+ fNOP = function () {},
2260
+ fBound = function () {
2261
+ return fToBind.apply(this instanceof fNOP && oThis
2262
+ ? this
2263
+ : oThis,
2264
+ aArgs.concat(Array.prototype.slice.call(arguments)));
2265
+ };
2266
+
2267
+ fNOP.prototype = this.prototype;
2268
+ fBound.prototype = new fNOP();
2269
+
2270
+ return fBound;
2271
+ };