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,2294 @@
1
+ /****************************************************************************
2
+ Copyright (c) 2008-2010 Ricardo Quesada
3
+ Copyright (c) 2011-2012 cocos2d-x.org
4
+ Copyright (c) 2013-2014 Chukong Technologies Inc.
5
+
6
+ http://www.cocos2d-x.org
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ of this software and associated documentation files (the "Software"), to deal
10
+ in the Software without restriction, including without limitation the rights
11
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ copies of the Software, and to permit persons to whom the Software is
13
+ furnished to do so, subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be included in
16
+ all copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
+ THE SOFTWARE.
25
+ ****************************************************************************/
26
+
27
+ // ideas taken from:
28
+ // . The ocean spray in your face [Jeff Lander]
29
+ // http://www.double.co.nz/dust/col0798.pdf
30
+ // . Building an Advanced Particle System [John van der Burg]
31
+ // http://www.gamasutra.com/features/20000623/vanderburg_01.htm
32
+ // . LOVE game engine
33
+ // http://love2d.org/
34
+ //
35
+ //
36
+ // Radius mode support, from 71 squared
37
+ // http://particledesigner.71squared.com/
38
+ //
39
+ // IMPORTANT: Particle Designer is supported by cocos2d, but
40
+ // 'Radius Mode' in Particle Designer uses a fixed emit rate of 30 hz. Since that can't be guarateed in cocos2d,
41
+ // cocos2d uses a another approach, but the results are almost identical.
42
+ //
43
+
44
+
45
+ // tCCPositionType
46
+ // possible types of particle positions
47
+
48
+
49
+ /**
50
+ * Structure that contains the values of each particle
51
+ * @Class
52
+ * @Construct
53
+ * @param {cc.Point} [pos=cc.p(0,0)] Position of particle
54
+ * @param {cc.Point} [startPos=cc.p(0,0)]
55
+ * @param {cc.Color} [color= cc.color(0, 0, 0, 255)]
56
+ * @param {cc.Color} [deltaColor=cc.color(0, 0, 0, 255)]
57
+ * @param {cc.Size} [size=0]
58
+ * @param {cc.Size} [deltaSize=0]
59
+ * @param {Number} [rotation=0]
60
+ * @param {Number} [deltaRotation=0]
61
+ * @param {Number} [timeToLive=0]
62
+ * @param {Number} [atlasIndex=0]
63
+ * @param {cc.Particle.ModeA} [modeA=]
64
+ * @param {cc.Particle.ModeA} [modeB=]
65
+ */
66
+ cc.Particle = function (pos, startPos, color, deltaColor, size, deltaSize, rotation, deltaRotation, timeToLive, atlasIndex, modeA, modeB) {
67
+ this.pos = pos ? pos : cc.p(0,0);
68
+ this.startPos = startPos ? startPos : cc.p(0,0);
69
+ this.color = color ? color : {r:0, g: 0, b:0, a:255};
70
+ this.deltaColor = deltaColor ? deltaColor : {r:0, g: 0, b:0, a:255} ;
71
+ this.size = size || 0;
72
+ this.deltaSize = deltaSize || 0;
73
+ this.rotation = rotation || 0;
74
+ this.deltaRotation = deltaRotation || 0;
75
+ this.timeToLive = timeToLive || 0;
76
+ this.atlasIndex = atlasIndex || 0;
77
+ this.modeA = modeA ? modeA : new cc.Particle.ModeA();
78
+ this.modeB = modeB ? modeB : new cc.Particle.ModeB();
79
+ this.isChangeColor = false;
80
+ this.drawPos = cc.p(0, 0);
81
+ };
82
+
83
+ /**
84
+ * Mode A: gravity, direction, radial accel, tangential accel
85
+ * @Class
86
+ * @Construct
87
+ * @param {cc.Point} dir direction of particle
88
+ * @param {Number} radialAccel
89
+ * @param {Number} tangentialAccel
90
+ */
91
+ cc.Particle.ModeA = function (dir, radialAccel, tangentialAccel) {
92
+ this.dir = dir ? dir : cc.p(0,0);
93
+ this.radialAccel = radialAccel || 0;
94
+ this.tangentialAccel = tangentialAccel || 0;
95
+ };
96
+
97
+ /**
98
+ * Mode B: radius mode
99
+ * @Class
100
+ * @Construct
101
+ * @param {Number} angle
102
+ * @param {Number} degreesPerSecond
103
+ * @param {Number} radius
104
+ * @param {Number} deltaRadius
105
+ */
106
+ cc.Particle.ModeB = function (angle, degreesPerSecond, radius, deltaRadius) {
107
+ this.angle = angle || 0;
108
+ this.degreesPerSecond = degreesPerSecond || 0;
109
+ this.radius = radius || 0;
110
+ this.deltaRadius = deltaRadius || 0;
111
+ };
112
+
113
+ /**
114
+ * Array of Point instances used to optimize particle updates
115
+ */
116
+ cc.Particle.TemporaryPoints = [
117
+ cc.p(),
118
+ cc.p(),
119
+ cc.p(),
120
+ cc.p()
121
+ ];
122
+
123
+ /**
124
+ * <p>
125
+ * Particle System base class. <br/>
126
+ * Attributes of a Particle System:<br/>
127
+ * - emmision rate of the particles<br/>
128
+ * - Gravity Mode (Mode A): <br/>
129
+ * - gravity <br/>
130
+ * - direction <br/>
131
+ * - speed +- variance <br/>
132
+ * - tangential acceleration +- variance<br/>
133
+ * - radial acceleration +- variance<br/>
134
+ * - Radius Mode (Mode B): <br/>
135
+ * - startRadius +- variance <br/>
136
+ * - endRadius +- variance <br/>
137
+ * - rotate +- variance <br/>
138
+ * - Properties common to all modes: <br/>
139
+ * - life +- life variance <br/>
140
+ * - start spin +- variance <br/>
141
+ * - end spin +- variance <br/>
142
+ * - start size +- variance <br/>
143
+ * - end size +- variance <br/>
144
+ * - start color +- variance <br/>
145
+ * - end color +- variance <br/>
146
+ * - life +- variance <br/>
147
+ * - blending function <br/>
148
+ * - texture <br/>
149
+ * <br/>
150
+ * cocos2d also supports particles generated by Particle Designer (http://particledesigner.71squared.com/).<br/>
151
+ * 'Radius Mode' in Particle Designer uses a fixed emit rate of 30 hz. Since that can't be guarateed in cocos2d, <br/>
152
+ * cocos2d uses a another approach, but the results are almost identical.<br/>
153
+ * cocos2d supports all the variables used by Particle Designer plus a bit more: <br/>
154
+ * - spinning particles (supported when using ParticleSystem) <br/>
155
+ * - tangential acceleration (Gravity mode) <br/>
156
+ * - radial acceleration (Gravity mode) <br/>
157
+ * - radius direction (Radius mode) (Particle Designer supports outwards to inwards direction only) <br/>
158
+ * It is possible to customize any of the above mentioned properties in runtime. Example: <br/>
159
+ * </p>
160
+ * @class
161
+ * @extends cc.Node
162
+ *
163
+ * @property {Boolean} opacityModifyRGB - Indicate whether the alpha value modify color.
164
+ * @property {cc.SpriteBatchNode} batchNode - Weak reference to the sprite batch node.
165
+ * @property {Boolean} active - <@readonly> Indicate whether the particle system is activated.
166
+ * @property {Number} shapeType - ShapeType of ParticleSystem : cc.ParticleSystem.BALL_SHAPE | cc.ParticleSystem.STAR_SHAPE.
167
+ * @property {Number} atlasIndex - Index of system in batch node array.
168
+ * @property {Number} particleCount - Current quantity of particles that are being simulated.
169
+ * @property {Number} duration - How many seconds the emitter wil run. -1 means 'forever'
170
+ * @property {cc.Point} sourcePos - Source position of the emitter.
171
+ * @property {cc.Point} posVar - Variation of source position.
172
+ * @property {Number} life - Life of each particle setter.
173
+ * @property {Number} lifeVar - Variation of life.
174
+ * @property {Number} angle - Angle of each particle setter.
175
+ * @property {Number} angleVar - Variation of angle of each particle setter.
176
+ * @property {Number} startSize - Start size in pixels of each particle.
177
+ * @property {Number} startSizeVar - Variation of start size in pixels.
178
+ * @property {Number} endSize - End size in pixels of each particle.
179
+ * @property {Number} endSizeVar - Variation of end size in pixels.
180
+ * @property {Number} startSpin - Start angle of each particle.
181
+ * @property {Number} startSpinVar - Variation of start angle.
182
+ * @property {Number} endSpin - End angle of each particle.
183
+ * @property {Number} endSpinVar - Variation of end angle.
184
+ * @property {cc.Point} gravity - Gravity of the emitter.
185
+ * @property {cc.Point} speed - Speed of the emitter.
186
+ * @property {cc.Point} speedVar - Variation of the speed.
187
+ * @property {Number} tangentialAccel - Tangential acceleration of each particle. Only available in 'Gravity' mode.
188
+ * @property {Number} tangentialAccelVar - Variation of the tangential acceleration.
189
+ * @property {Number} tangentialAccel - Radial acceleration of each particle. Only available in 'Gravity' mode.
190
+ * @property {Number} tangentialAccelVar - Variation of the radial acceleration.
191
+ * @property {Boolean} rotationIsDir - Indicate whether the rotation of each particle equals to its direction. Only available in 'Gravity' mode.
192
+ * @property {Number} startRadius - Starting radius of the particles. Only available in 'Radius' mode.
193
+ * @property {Number} startRadiusVar - Variation of the starting radius.
194
+ * @property {Number} endRadius - Ending radius of the particles. Only available in 'Radius' mode.
195
+ * @property {Number} endRadiusVar - Variation of the ending radius.
196
+ * @property {Number} rotatePerS - Number of degress to rotate a particle around the source pos per second. Only available in 'Radius' mode.
197
+ * @property {Number} rotatePerSVar - Variation of the degress to rotate a particle around the source pos per second.
198
+ * @property {cc.Color} startColor - Start color of each particle.
199
+ * @property {cc.Color} startColorVar - Variation of the start color.
200
+ * @property {cc.Color} endColor - Ending color of each particle.
201
+ * @property {cc.Color} endColorVar - Variation of the end color.
202
+ * @property {Number} emissionRate - Emission rate of the particles.
203
+ * @property {Number} emitterMode - Emitter modes: CCParticleSystem.MODE_GRAVITY: uses gravity, speed, radial and tangential acceleration; CCParticleSystem.MODE_RADIUS: uses radius movement + rotation.
204
+ * @property {Number} positionType - Particles movement type: cc.ParticleSystem.TYPE_FREE | cc.ParticleSystem.TYPE_GROUPED.
205
+ * @property {Number} totalParticles - Maximum particles of the system.
206
+ * @property {Boolean} autoRemoveOnFinish - Indicate whether the node will be auto-removed when it has no particles left.
207
+ * @property {cc.Texture2D} texture - Texture of Particle System.
208
+ *
209
+ * @example
210
+ * emitter.radialAccel = 15;
211
+ * emitter.startSpin = 0;
212
+ */
213
+ cc.ParticleSystem = cc.Node.extend(/** @lends cc.ParticleSystem# */{
214
+ _className:"ParticleSystem",
215
+ //***********variables*************
216
+ _plistFile: "",
217
+ //! time elapsed since the start of the system (in seconds)
218
+ _elapsed: 0,
219
+ _dontTint: false,
220
+
221
+ // Different modes
222
+ //! Mode A:Gravity + Tangential Accel + Radial Accel
223
+ modeA: null,
224
+ //! Mode B: circular movement (gravity, radial accel and tangential accel don't are not used in this mode)
225
+ modeB: null,
226
+
227
+ //private POINTZERO for ParticleSystem
228
+ _pointZeroForParticle: cc.p(0, 0),
229
+
230
+ //! Array of particles
231
+ _particles: null,
232
+
233
+ // color modulate
234
+ // BOOL colorModulate;
235
+
236
+ //! How many particles can be emitted per second
237
+ _emitCounter: 0,
238
+ //! particle idx
239
+ _particleIdx: 0,
240
+
241
+ _batchNode: null,
242
+ atlasIndex: 0,
243
+
244
+ //true if scaled or rotated
245
+ _transformSystemDirty: false,
246
+ _allocatedParticles: 0,
247
+
248
+ _isActive: false,
249
+ particleCount: 0,
250
+ duration: 0,
251
+ _sourcePosition: null,
252
+ _posVar: null,
253
+ life: 0,
254
+ lifeVar: 0,
255
+ angle: 0,
256
+ angleVar: 0,
257
+ startSize: 0,
258
+ startSizeVar: 0,
259
+ endSize: 0,
260
+ endSizeVar: 0,
261
+ _startColor: null,
262
+ _startColorVar: null,
263
+ _endColor: null,
264
+ _endColorVar: null,
265
+ startSpin: 0,
266
+ startSpinVar: 0,
267
+ endSpin: 0,
268
+ endSpinVar: 0,
269
+ emissionRate: 0,
270
+ _totalParticles: 0,
271
+ _texture: null,
272
+ _blendFunc: null,
273
+ _opacityModifyRGB: false,
274
+ positionType: null,
275
+ autoRemoveOnFinish: false,
276
+ emitterMode: 0,
277
+
278
+ _textureLoaded: null,
279
+
280
+ /**
281
+ * <p> return the string found by key in dict. <br/>
282
+ * This plist files can be create manually or with Particle Designer:<br/>
283
+ * http://particledesigner.71squared.com/<br/>
284
+ * </p>
285
+ * Constructor of cc.ParticleSystem
286
+ * @param {String|Number} plistFile
287
+ */
288
+ ctor:function (plistFile) {
289
+ cc.Node.prototype.ctor.call(this);
290
+ this.emitterMode = cc.ParticleSystem.MODE_GRAVITY;
291
+ this.modeA = new cc.ParticleSystem.ModeA();
292
+ this.modeB = new cc.ParticleSystem.ModeB();
293
+ this._blendFunc = {src:cc.BLEND_SRC, dst:cc.BLEND_DST};
294
+
295
+ this._particles = [];
296
+ this._sourcePosition = cc.p(0, 0);
297
+ this._posVar = cc.p(0, 0);
298
+
299
+ this._startColor = cc.color(255, 255, 255, 255);
300
+ this._startColorVar = cc.color(255, 255, 255, 255);
301
+ this._endColor = cc.color(255, 255, 255, 255);
302
+ this._endColorVar = cc.color(255, 255, 255, 255);
303
+
304
+ this._plistFile = "";
305
+ this._elapsed = 0;
306
+ this._dontTint = false;
307
+ this._pointZeroForParticle = cc.p(0, 0);
308
+ this._emitCounter = 0;
309
+ this._particleIdx = 0;
310
+ this._batchNode = null;
311
+ this.atlasIndex = 0;
312
+
313
+ this._transformSystemDirty = false;
314
+ this._allocatedParticles = 0;
315
+ this._isActive = false;
316
+ this.particleCount = 0;
317
+ this.duration = 0;
318
+ this.life = 0;
319
+ this.lifeVar = 0;
320
+ this.angle = 0;
321
+ this.angleVar = 0;
322
+ this.startSize = 0;
323
+ this.startSizeVar = 0;
324
+ this.endSize = 0;
325
+ this.endSizeVar = 0;
326
+
327
+ this.startSpin = 0;
328
+ this.startSpinVar = 0;
329
+ this.endSpin = 0;
330
+ this.endSpinVar = 0;
331
+ this.emissionRate = 0;
332
+ this._totalParticles = 0;
333
+ this._texture = null;
334
+ this._opacityModifyRGB = false;
335
+ this.positionType = cc.ParticleSystem.TYPE_FREE;
336
+ this.autoRemoveOnFinish = false;
337
+
338
+ this._textureLoaded = true;
339
+
340
+ if (!plistFile || cc.isNumber(plistFile)) {
341
+ var ton = plistFile || 100;
342
+ this.setDrawMode(cc.ParticleSystem.TEXTURE_MODE);
343
+ this.initWithTotalParticles(ton);
344
+ } else if (plistFile) {
345
+ this.initWithFile(plistFile);
346
+ }
347
+ },
348
+
349
+ _createRenderCmd: function(){
350
+ if(cc._renderType === cc._RENDER_TYPE_CANVAS)
351
+ return new cc.ParticleSystem.CanvasRenderCmd(this);
352
+ else
353
+ return new cc.ParticleSystem.WebGLRenderCmd(this);
354
+ },
355
+
356
+ /**
357
+ * This is a hack function for performance, it's only available on Canvas mode. <br/>
358
+ * It's very expensive to change color on Canvas mode, so if set it to true, particle system will ignore the changing color operation.
359
+ * @param {boolean} ignore
360
+ */
361
+ ignoreColor: function(ignore){
362
+ this._dontTint = ignore;
363
+ },
364
+
365
+ /**
366
+ * <p> initializes the texture with a rectangle measured Points<br/>
367
+ * pointRect should be in Texture coordinates, not pixel coordinates
368
+ * </p>
369
+ * @param {cc.Rect} pointRect
370
+ */
371
+ initTexCoordsWithRect:function (pointRect) {
372
+ this._renderCmd.initTexCoordsWithRect(pointRect);
373
+ },
374
+
375
+ /**
376
+ * return weak reference to the cc.SpriteBatchNode that renders the cc.Sprite
377
+ * @return {cc.ParticleBatchNode}
378
+ */
379
+ getBatchNode:function () {
380
+ return this._batchNode;
381
+ },
382
+
383
+ /**
384
+ * set weak reference to the cc.SpriteBatchNode that renders the cc.Sprite
385
+ * @param {cc.ParticleBatchNode} batchNode
386
+ */
387
+ setBatchNode:function (batchNode) {
388
+ this._renderCmd.setBatchNode(batchNode);
389
+ },
390
+
391
+ /**
392
+ * return index of system in batch node array
393
+ * @return {Number}
394
+ */
395
+ getAtlasIndex:function () {
396
+ return this.atlasIndex;
397
+ },
398
+
399
+ /**
400
+ * set index of system in batch node array
401
+ * @param {Number} atlasIndex
402
+ */
403
+ setAtlasIndex:function (atlasIndex) {
404
+ this.atlasIndex = atlasIndex;
405
+ },
406
+
407
+ /**
408
+ * Return DrawMode of ParticleSystem (Canvas Mode only)
409
+ * @return {Number}
410
+ */
411
+ getDrawMode:function () {
412
+ return this._renderCmd.getDrawMode();
413
+ },
414
+
415
+ /**
416
+ * DrawMode of ParticleSystem setter (Canvas Mode only)
417
+ * @param {Number} drawMode
418
+ */
419
+ setDrawMode:function (drawMode) {
420
+ this._renderCmd.setDrawMode(drawMode);
421
+ },
422
+
423
+ /**
424
+ * Return ShapeType of ParticleSystem (Canvas Mode only)
425
+ * @return {Number}
426
+ */
427
+ getShapeType:function () {
428
+ return this._renderCmd.getShapeType();
429
+ },
430
+
431
+ /**
432
+ * ShapeType of ParticleSystem setter (Canvas Mode only)
433
+ * @param {Number} shapeType
434
+ */
435
+ setShapeType:function (shapeType) {
436
+ this._renderCmd.setShapeType(shapeType);
437
+ },
438
+
439
+ /**
440
+ * Return ParticleSystem is active
441
+ * @return {Boolean}
442
+ */
443
+ isActive:function () {
444
+ return this._isActive;
445
+ },
446
+
447
+ /**
448
+ * Quantity of particles that are being simulated at the moment
449
+ * @return {Number}
450
+ */
451
+ getParticleCount:function () {
452
+ return this.particleCount;
453
+ },
454
+
455
+ /**
456
+ * Quantity of particles setter
457
+ * @param {Number} particleCount
458
+ */
459
+ setParticleCount:function (particleCount) {
460
+ this.particleCount = particleCount;
461
+ },
462
+
463
+ /**
464
+ * How many seconds the emitter wil run. -1 means 'forever'
465
+ * @return {Number}
466
+ */
467
+ getDuration:function () {
468
+ return this.duration;
469
+ },
470
+
471
+ /**
472
+ * set run seconds of the emitter
473
+ * @param {Number} duration
474
+ */
475
+ setDuration:function (duration) {
476
+ this.duration = duration;
477
+ },
478
+
479
+ /**
480
+ * Return sourcePosition of the emitter
481
+ * @return {cc.Point | Object}
482
+ */
483
+ getSourcePosition:function () {
484
+ return {x: this._sourcePosition.x, y: this._sourcePosition.y};
485
+ },
486
+
487
+ /**
488
+ * sourcePosition of the emitter setter
489
+ * @param sourcePosition
490
+ */
491
+ setSourcePosition:function (sourcePosition) {
492
+ this._sourcePosition = sourcePosition;
493
+ },
494
+
495
+ /**
496
+ * Return Position variance of the emitter
497
+ * @return {cc.Point | Object}
498
+ */
499
+ getPosVar:function () {
500
+ return {x: this._posVar.x, y: this._posVar.y};
501
+ },
502
+
503
+ /**
504
+ * Position variance of the emitter setter
505
+ * @param {cc.Point} posVar
506
+ */
507
+ setPosVar:function (posVar) {
508
+ this._posVar = posVar;
509
+ },
510
+
511
+ /**
512
+ * Return life of each particle
513
+ * @return {Number}
514
+ */
515
+ getLife:function () {
516
+ return this.life;
517
+ },
518
+
519
+ /**
520
+ * life of each particle setter
521
+ * @param {Number} life
522
+ */
523
+ setLife:function (life) {
524
+ this.life = life;
525
+ },
526
+
527
+ /**
528
+ * Return life variance of each particle
529
+ * @return {Number}
530
+ */
531
+ getLifeVar:function () {
532
+ return this.lifeVar;
533
+ },
534
+
535
+ /**
536
+ * life variance of each particle setter
537
+ * @param {Number} lifeVar
538
+ */
539
+ setLifeVar:function (lifeVar) {
540
+ this.lifeVar = lifeVar;
541
+ },
542
+
543
+ /**
544
+ * Return angle of each particle
545
+ * @return {Number}
546
+ */
547
+ getAngle:function () {
548
+ return this.angle;
549
+ },
550
+
551
+ /**
552
+ * angle of each particle setter
553
+ * @param {Number} angle
554
+ */
555
+ setAngle:function (angle) {
556
+ this.angle = angle;
557
+ },
558
+
559
+ /**
560
+ * Return angle variance of each particle
561
+ * @return {Number}
562
+ */
563
+ getAngleVar:function () {
564
+ return this.angleVar;
565
+ },
566
+
567
+ /**
568
+ * angle variance of each particle setter
569
+ * @param angleVar
570
+ */
571
+ setAngleVar:function (angleVar) {
572
+ this.angleVar = angleVar;
573
+ },
574
+
575
+ // mode A
576
+ /**
577
+ * Return Gravity of emitter
578
+ * @return {cc.Point}
579
+ */
580
+ getGravity:function () {
581
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
582
+ cc.log("cc.ParticleBatchNode.getGravity() : Particle Mode should be Gravity");
583
+ var locGravity = this.modeA.gravity;
584
+ return cc.p(locGravity.x, locGravity.y);
585
+ },
586
+
587
+ /**
588
+ * Gravity of emitter setter
589
+ * @param {cc.Point} gravity
590
+ */
591
+ setGravity:function (gravity) {
592
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
593
+ cc.log("cc.ParticleBatchNode.setGravity() : Particle Mode should be Gravity");
594
+ this.modeA.gravity = gravity;
595
+ },
596
+
597
+ /**
598
+ * Return Speed of each particle
599
+ * @return {Number}
600
+ */
601
+ getSpeed:function () {
602
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
603
+ cc.log("cc.ParticleBatchNode.getSpeed() : Particle Mode should be Gravity");
604
+ return this.modeA.speed;
605
+ },
606
+
607
+ /**
608
+ * Speed of each particle setter
609
+ * @param {Number} speed
610
+ */
611
+ setSpeed:function (speed) {
612
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
613
+ cc.log("cc.ParticleBatchNode.setSpeed() : Particle Mode should be Gravity");
614
+ this.modeA.speed = speed;
615
+ },
616
+
617
+ /**
618
+ * return speed variance of each particle. Only available in 'Gravity' mode.
619
+ * @return {Number}
620
+ */
621
+ getSpeedVar:function () {
622
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
623
+ cc.log("cc.ParticleBatchNode.getSpeedVar() : Particle Mode should be Gravity");
624
+ return this.modeA.speedVar;
625
+ },
626
+
627
+ /**
628
+ * speed variance of each particle setter. Only available in 'Gravity' mode.
629
+ * @param {Number} speedVar
630
+ */
631
+ setSpeedVar:function (speedVar) {
632
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
633
+ cc.log("cc.ParticleBatchNode.setSpeedVar() : Particle Mode should be Gravity");
634
+ this.modeA.speedVar = speedVar;
635
+ },
636
+
637
+ /**
638
+ * Return tangential acceleration of each particle. Only available in 'Gravity' mode.
639
+ * @return {Number}
640
+ */
641
+ getTangentialAccel:function () {
642
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
643
+ cc.log("cc.ParticleBatchNode.getTangentialAccel() : Particle Mode should be Gravity");
644
+ return this.modeA.tangentialAccel;
645
+ },
646
+
647
+ /**
648
+ * Tangential acceleration of each particle setter. Only available in 'Gravity' mode.
649
+ * @param {Number} tangentialAccel
650
+ */
651
+ setTangentialAccel:function (tangentialAccel) {
652
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
653
+ cc.log("cc.ParticleBatchNode.setTangentialAccel() : Particle Mode should be Gravity");
654
+ this.modeA.tangentialAccel = tangentialAccel;
655
+ },
656
+
657
+ /**
658
+ * Return tangential acceleration variance of each particle. Only available in 'Gravity' mode.
659
+ * @return {Number}
660
+ */
661
+ getTangentialAccelVar:function () {
662
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
663
+ cc.log("cc.ParticleBatchNode.getTangentialAccelVar() : Particle Mode should be Gravity");
664
+ return this.modeA.tangentialAccelVar;
665
+ },
666
+
667
+ /**
668
+ * tangential acceleration variance of each particle setter. Only available in 'Gravity' mode.
669
+ * @param {Number} tangentialAccelVar
670
+ */
671
+ setTangentialAccelVar:function (tangentialAccelVar) {
672
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
673
+ cc.log("cc.ParticleBatchNode.setTangentialAccelVar() : Particle Mode should be Gravity");
674
+ this.modeA.tangentialAccelVar = tangentialAccelVar;
675
+ },
676
+
677
+ /**
678
+ * Return radial acceleration of each particle. Only available in 'Gravity' mode.
679
+ * @return {Number}
680
+ */
681
+ getRadialAccel:function () {
682
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
683
+ cc.log("cc.ParticleBatchNode.getRadialAccel() : Particle Mode should be Gravity");
684
+ return this.modeA.radialAccel;
685
+ },
686
+
687
+ /**
688
+ * radial acceleration of each particle setter. Only available in 'Gravity' mode.
689
+ * @param {Number} radialAccel
690
+ */
691
+ setRadialAccel:function (radialAccel) {
692
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
693
+ cc.log("cc.ParticleBatchNode.setRadialAccel() : Particle Mode should be Gravity");
694
+ this.modeA.radialAccel = radialAccel;
695
+ },
696
+
697
+ /**
698
+ * Return radial acceleration variance of each particle. Only available in 'Gravity' mode.
699
+ * @return {Number}
700
+ */
701
+ getRadialAccelVar:function () {
702
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
703
+ cc.log("cc.ParticleBatchNode.getRadialAccelVar() : Particle Mode should be Gravity");
704
+ return this.modeA.radialAccelVar;
705
+ },
706
+
707
+ /**
708
+ * radial acceleration variance of each particle setter. Only available in 'Gravity' mode.
709
+ * @param {Number} radialAccelVar
710
+ */
711
+ setRadialAccelVar:function (radialAccelVar) {
712
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
713
+ cc.log("cc.ParticleBatchNode.setRadialAccelVar() : Particle Mode should be Gravity");
714
+ this.modeA.radialAccelVar = radialAccelVar;
715
+ },
716
+
717
+ /**
718
+ * get the rotation of each particle to its direction Only available in 'Gravity' mode.
719
+ * @returns {boolean}
720
+ */
721
+ getRotationIsDir: function(){
722
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
723
+ cc.log("cc.ParticleBatchNode.getRotationIsDir() : Particle Mode should be Gravity");
724
+ return this.modeA.rotationIsDir;
725
+ },
726
+
727
+ /**
728
+ * set the rotation of each particle to its direction Only available in 'Gravity' mode.
729
+ * @param {boolean} t
730
+ */
731
+ setRotationIsDir: function(t){
732
+ if(this.emitterMode !== cc.ParticleSystem.MODE_GRAVITY)
733
+ cc.log("cc.ParticleBatchNode.setRotationIsDir() : Particle Mode should be Gravity");
734
+ this.modeA.rotationIsDir = t;
735
+ },
736
+
737
+ // mode B
738
+ /**
739
+ * Return starting radius of the particles. Only available in 'Radius' mode.
740
+ * @return {Number}
741
+ */
742
+ getStartRadius:function () {
743
+ if(this.emitterMode !== cc.ParticleSystem.MODE_RADIUS)
744
+ cc.log("cc.ParticleBatchNode.getStartRadius() : Particle Mode should be Radius");
745
+ return this.modeB.startRadius;
746
+ },
747
+
748
+ /**
749
+ * starting radius of the particles setter. Only available in 'Radius' mode.
750
+ * @param {Number} startRadius
751
+ */
752
+ setStartRadius:function (startRadius) {
753
+ if(this.emitterMode !== cc.ParticleSystem.MODE_RADIUS)
754
+ cc.log("cc.ParticleBatchNode.setStartRadius() : Particle Mode should be Radius");
755
+ this.modeB.startRadius = startRadius;
756
+ },
757
+
758
+ /**
759
+ * Return starting radius variance of the particles. Only available in 'Radius' mode.
760
+ * @return {Number}
761
+ */
762
+ getStartRadiusVar:function () {
763
+ if(this.emitterMode !== cc.ParticleSystem.MODE_RADIUS)
764
+ cc.log("cc.ParticleBatchNode.getStartRadiusVar() : Particle Mode should be Radius");
765
+ return this.modeB.startRadiusVar;
766
+ },
767
+
768
+ /**
769
+ * starting radius variance of the particles setter. Only available in 'Radius' mode.
770
+ * @param {Number} startRadiusVar
771
+ */
772
+ setStartRadiusVar:function (startRadiusVar) {
773
+ if(this.emitterMode !== cc.ParticleSystem.MODE_RADIUS)
774
+ cc.log("cc.ParticleBatchNode.setStartRadiusVar() : Particle Mode should be Radius");
775
+ this.modeB.startRadiusVar = startRadiusVar;
776
+ },
777
+
778
+ /**
779
+ * Return ending radius of the particles. Only available in 'Radius' mode.
780
+ * @return {Number}
781
+ */
782
+ getEndRadius:function () {
783
+ if(this.emitterMode !== cc.ParticleSystem.MODE_RADIUS)
784
+ cc.log("cc.ParticleBatchNode.getEndRadius() : Particle Mode should be Radius");
785
+ return this.modeB.endRadius;
786
+ },
787
+
788
+ /**
789
+ * ending radius of the particles setter. Only available in 'Radius' mode.
790
+ * @param {Number} endRadius
791
+ */
792
+ setEndRadius:function (endRadius) {
793
+ if(this.emitterMode !== cc.ParticleSystem.MODE_RADIUS)
794
+ cc.log("cc.ParticleBatchNode.setEndRadius() : Particle Mode should be Radius");
795
+ this.modeB.endRadius = endRadius;
796
+ },
797
+
798
+ /**
799
+ * Return ending radius variance of the particles. Only available in 'Radius' mode.
800
+ * @return {Number}
801
+ */
802
+ getEndRadiusVar:function () {
803
+ if(this.emitterMode !== cc.ParticleSystem.MODE_RADIUS)
804
+ cc.log("cc.ParticleBatchNode.getEndRadiusVar() : Particle Mode should be Radius");
805
+ return this.modeB.endRadiusVar;
806
+ },
807
+
808
+ /**
809
+ * ending radius variance of the particles setter. Only available in 'Radius' mode.
810
+ * @param endRadiusVar
811
+ */
812
+ setEndRadiusVar:function (endRadiusVar) {
813
+ if(this.emitterMode !== cc.ParticleSystem.MODE_RADIUS)
814
+ cc.log("cc.ParticleBatchNode.setEndRadiusVar() : Particle Mode should be Radius");
815
+ this.modeB.endRadiusVar = endRadiusVar;
816
+ },
817
+
818
+ /**
819
+ * get Number of degress to rotate a particle around the source pos per second. Only available in 'Radius' mode.
820
+ * @return {Number}
821
+ */
822
+ getRotatePerSecond:function () {
823
+ if(this.emitterMode !== cc.ParticleSystem.MODE_RADIUS)
824
+ cc.log("cc.ParticleBatchNode.getRotatePerSecond() : Particle Mode should be Radius");
825
+ return this.modeB.rotatePerSecond;
826
+ },
827
+
828
+ /**
829
+ * set Number of degress to rotate a particle around the source pos per second. Only available in 'Radius' mode.
830
+ * @param {Number} degrees
831
+ */
832
+ setRotatePerSecond:function (degrees) {
833
+ if(this.emitterMode !== cc.ParticleSystem.MODE_RADIUS)
834
+ cc.log("cc.ParticleBatchNode.setRotatePerSecond() : Particle Mode should be Radius");
835
+ this.modeB.rotatePerSecond = degrees;
836
+ },
837
+
838
+ /**
839
+ * Return Variance in degrees for rotatePerSecond. Only available in 'Radius' mode.
840
+ * @return {Number}
841
+ */
842
+ getRotatePerSecondVar:function () {
843
+ if(this.emitterMode !== cc.ParticleSystem.MODE_RADIUS)
844
+ cc.log("cc.ParticleBatchNode.getRotatePerSecondVar() : Particle Mode should be Radius");
845
+ return this.modeB.rotatePerSecondVar;
846
+ },
847
+
848
+ /**
849
+ * Variance in degrees for rotatePerSecond setter. Only available in 'Radius' mode.
850
+ * @param degrees
851
+ */
852
+ setRotatePerSecondVar:function (degrees) {
853
+ if(this.emitterMode !== cc.ParticleSystem.MODE_RADIUS)
854
+ cc.log("cc.ParticleBatchNode.setRotatePerSecondVar() : Particle Mode should be Radius");
855
+ this.modeB.rotatePerSecondVar = degrees;
856
+ },
857
+ //////////////////////////////////////////////////////////////////////////
858
+
859
+ //don't use a transform matrix, this is faster
860
+ setScale:function (scale, scaleY) {
861
+ this._transformSystemDirty = true;
862
+ cc.Node.prototype.setScale.call(this, scale, scaleY);
863
+ },
864
+
865
+ setRotation:function (newRotation) {
866
+ this._transformSystemDirty = true;
867
+ cc.Node.prototype.setRotation.call(this, newRotation);
868
+ },
869
+
870
+ setScaleX:function (newScaleX) {
871
+ this._transformSystemDirty = true;
872
+ cc.Node.prototype.setScaleX.call(this, newScaleX);
873
+ },
874
+
875
+ setScaleY:function (newScaleY) {
876
+ this._transformSystemDirty = true;
877
+ cc.Node.prototype.setScaleY.call(this, newScaleY);
878
+ },
879
+
880
+ /**
881
+ * get start size in pixels of each particle
882
+ * @return {Number}
883
+ */
884
+ getStartSize:function () {
885
+ return this.startSize;
886
+ },
887
+
888
+ /**
889
+ * set start size in pixels of each particle
890
+ * @param {Number} startSize
891
+ */
892
+ setStartSize:function (startSize) {
893
+ this.startSize = startSize;
894
+ },
895
+
896
+ /**
897
+ * get size variance in pixels of each particle
898
+ * @return {Number}
899
+ */
900
+ getStartSizeVar:function () {
901
+ return this.startSizeVar;
902
+ },
903
+
904
+ /**
905
+ * set size variance in pixels of each particle
906
+ * @param {Number} startSizeVar
907
+ */
908
+ setStartSizeVar:function (startSizeVar) {
909
+ this.startSizeVar = startSizeVar;
910
+ },
911
+
912
+ /**
913
+ * get end size in pixels of each particle
914
+ * @return {Number}
915
+ */
916
+ getEndSize:function () {
917
+ return this.endSize;
918
+ },
919
+
920
+ /**
921
+ * set end size in pixels of each particle
922
+ * @param endSize
923
+ */
924
+ setEndSize:function (endSize) {
925
+ this.endSize = endSize;
926
+ },
927
+
928
+ /**
929
+ * get end size variance in pixels of each particle
930
+ * @return {Number}
931
+ */
932
+ getEndSizeVar:function () {
933
+ return this.endSizeVar;
934
+ },
935
+
936
+ /**
937
+ * set end size variance in pixels of each particle
938
+ * @param {Number} endSizeVar
939
+ */
940
+ setEndSizeVar:function (endSizeVar) {
941
+ this.endSizeVar = endSizeVar;
942
+ },
943
+
944
+ /**
945
+ * set start color of each particle
946
+ * @return {cc.Color}
947
+ */
948
+ getStartColor:function () {
949
+ return cc.color(this._startColor.r, this._startColor.g, this._startColor.b, this._startColor.a);
950
+ },
951
+
952
+ /**
953
+ * get start color of each particle
954
+ * @param {cc.Color} startColor
955
+ */
956
+ setStartColor:function (startColor) {
957
+ this._startColor = cc.color(startColor);
958
+ },
959
+
960
+ /**
961
+ * get start color variance of each particle
962
+ * @return {cc.Color}
963
+ */
964
+ getStartColorVar:function () {
965
+ return cc.color(this._startColorVar.r, this._startColorVar.g, this._startColorVar.b, this._startColorVar.a);
966
+ },
967
+
968
+ /**
969
+ * set start color variance of each particle
970
+ * @param {cc.Color} startColorVar
971
+ */
972
+ setStartColorVar:function (startColorVar) {
973
+ this._startColorVar = cc.color(startColorVar);
974
+ },
975
+
976
+ /**
977
+ * get end color and end color variation of each particle
978
+ * @return {cc.Color}
979
+ */
980
+ getEndColor:function () {
981
+ return cc.color(this._endColor.r, this._endColor.g, this._endColor.b, this._endColor.a);
982
+ },
983
+
984
+ /**
985
+ * set end color and end color variation of each particle
986
+ * @param {cc.Color} endColor
987
+ */
988
+ setEndColor:function (endColor) {
989
+ this._endColor = cc.color(endColor);
990
+ },
991
+
992
+ /**
993
+ * get end color variance of each particle
994
+ * @return {cc.Color}
995
+ */
996
+ getEndColorVar:function () {
997
+ return cc.color(this._endColorVar.r, this._endColorVar.g, this._endColorVar.b, this._endColorVar.a);
998
+ },
999
+
1000
+ /**
1001
+ * set end color variance of each particle
1002
+ * @param {cc.Color} endColorVar
1003
+ */
1004
+ setEndColorVar:function (endColorVar) {
1005
+ this._endColorVar = cc.color(endColorVar);
1006
+ },
1007
+
1008
+ /**
1009
+ * get initial angle of each particle
1010
+ * @return {Number}
1011
+ */
1012
+ getStartSpin:function () {
1013
+ return this.startSpin;
1014
+ },
1015
+
1016
+ /**
1017
+ * set initial angle of each particle
1018
+ * @param {Number} startSpin
1019
+ */
1020
+ setStartSpin:function (startSpin) {
1021
+ this.startSpin = startSpin;
1022
+ },
1023
+
1024
+ /**
1025
+ * get initial angle variance of each particle
1026
+ * @return {Number}
1027
+ */
1028
+ getStartSpinVar:function () {
1029
+ return this.startSpinVar;
1030
+ },
1031
+
1032
+ /**
1033
+ * set initial angle variance of each particle
1034
+ * @param {Number} startSpinVar
1035
+ */
1036
+ setStartSpinVar:function (startSpinVar) {
1037
+ this.startSpinVar = startSpinVar;
1038
+ },
1039
+
1040
+ /**
1041
+ * get end angle of each particle
1042
+ * @return {Number}
1043
+ */
1044
+ getEndSpin:function () {
1045
+ return this.endSpin;
1046
+ },
1047
+
1048
+ /**
1049
+ * set end angle of each particle
1050
+ * @param {Number} endSpin
1051
+ */
1052
+ setEndSpin:function (endSpin) {
1053
+ this.endSpin = endSpin;
1054
+ },
1055
+
1056
+ /**
1057
+ * get end angle variance of each particle
1058
+ * @return {Number}
1059
+ */
1060
+ getEndSpinVar:function () {
1061
+ return this.endSpinVar;
1062
+ },
1063
+
1064
+ /**
1065
+ * set end angle variance of each particle
1066
+ * @param {Number} endSpinVar
1067
+ */
1068
+ setEndSpinVar:function (endSpinVar) {
1069
+ this.endSpinVar = endSpinVar;
1070
+ },
1071
+
1072
+ /**
1073
+ * get emission rate of the particles
1074
+ * @return {Number}
1075
+ */
1076
+ getEmissionRate:function () {
1077
+ return this.emissionRate;
1078
+ },
1079
+
1080
+ /**
1081
+ * set emission rate of the particles
1082
+ * @param {Number} emissionRate
1083
+ */
1084
+ setEmissionRate:function (emissionRate) {
1085
+ this.emissionRate = emissionRate;
1086
+ },
1087
+
1088
+ /**
1089
+ * get maximum particles of the system
1090
+ * @return {Number}
1091
+ */
1092
+ getTotalParticles:function () {
1093
+ return this._totalParticles;
1094
+ },
1095
+
1096
+ /**
1097
+ * set maximum particles of the system
1098
+ * @param {Number} tp totalParticles
1099
+ */
1100
+ setTotalParticles:function (tp) {
1101
+ this._renderCmd.setTotalParticles(tp);
1102
+ },
1103
+
1104
+ /**
1105
+ * get Texture of Particle System
1106
+ * @return {cc.Texture2D}
1107
+ */
1108
+ getTexture:function () {
1109
+ return this._texture;
1110
+ },
1111
+
1112
+ /**
1113
+ * set Texture of Particle System
1114
+ * @param {cc.Texture2D } texture
1115
+ */
1116
+ setTexture:function (texture) {
1117
+ if(!texture)
1118
+ return;
1119
+
1120
+ if(texture.isLoaded()){
1121
+ this.setTextureWithRect(texture, cc.rect(0, 0, texture.width, texture.height));
1122
+ } else {
1123
+ this._textureLoaded = false;
1124
+ texture.addEventListener("load", function(sender){
1125
+ this._textureLoaded = true;
1126
+ this.setTextureWithRect(sender, cc.rect(0, 0, sender.width, sender.height));
1127
+ }, this);
1128
+ }
1129
+ },
1130
+
1131
+ /** conforms to CocosNodeTexture protocol */
1132
+ /**
1133
+ * get BlendFunc of Particle System
1134
+ * @return {cc.BlendFunc}
1135
+ */
1136
+ getBlendFunc:function () {
1137
+ return this._blendFunc;
1138
+ },
1139
+
1140
+ /**
1141
+ * set BlendFunc of Particle System
1142
+ * @param {Number} src
1143
+ * @param {Number} dst
1144
+ */
1145
+ setBlendFunc:function (src, dst) {
1146
+ if (dst === undefined) {
1147
+ if (this._blendFunc != src) {
1148
+ this._blendFunc = src;
1149
+ this._updateBlendFunc();
1150
+ }
1151
+ } else {
1152
+ if (this._blendFunc.src != src || this._blendFunc.dst != dst) {
1153
+ this._blendFunc = {src:src, dst:dst};
1154
+ this._updateBlendFunc();
1155
+ }
1156
+ }
1157
+ },
1158
+
1159
+ /**
1160
+ * does the alpha value modify color getter
1161
+ * @return {Boolean}
1162
+ */
1163
+ isOpacityModifyRGB:function () {
1164
+ return this._opacityModifyRGB;
1165
+ },
1166
+
1167
+ /**
1168
+ * does the alpha value modify color setter
1169
+ * @param newValue
1170
+ */
1171
+ setOpacityModifyRGB:function (newValue) {
1172
+ this._opacityModifyRGB = newValue;
1173
+ },
1174
+
1175
+ /**
1176
+ * <p>whether or not the particles are using blend additive.<br/>
1177
+ * If enabled, the following blending function will be used.<br/>
1178
+ * </p>
1179
+ * @return {Boolean}
1180
+ * @example
1181
+ * source blend function = GL_SRC_ALPHA;
1182
+ * dest blend function = GL_ONE;
1183
+ */
1184
+ isBlendAdditive:function () {
1185
+ return (( this._blendFunc.src == cc.SRC_ALPHA && this._blendFunc.dst == cc.ONE) || (this._blendFunc.src == cc.ONE && this._blendFunc.dst == cc.ONE));
1186
+ },
1187
+
1188
+ /**
1189
+ * <p>whether or not the particles are using blend additive.<br/>
1190
+ * If enabled, the following blending function will be used.<br/>
1191
+ * </p>
1192
+ * @param {Boolean} isBlendAdditive
1193
+ */
1194
+ setBlendAdditive:function (isBlendAdditive) {
1195
+ var locBlendFunc = this._blendFunc;
1196
+ if (isBlendAdditive) {
1197
+ locBlendFunc.src = cc.SRC_ALPHA;
1198
+ locBlendFunc.dst = cc.ONE;
1199
+ } else {
1200
+ this._renderCmd._setBlendAdditive();
1201
+ }
1202
+ },
1203
+
1204
+ /**
1205
+ * get particles movement type: Free or Grouped
1206
+ * @return {Number}
1207
+ */
1208
+ getPositionType:function () {
1209
+ return this.positionType;
1210
+ },
1211
+
1212
+ /**
1213
+ * set particles movement type: Free or Grouped
1214
+ * @param {Number} positionType
1215
+ */
1216
+ setPositionType:function (positionType) {
1217
+ this.positionType = positionType;
1218
+ },
1219
+
1220
+ /**
1221
+ * <p> return whether or not the node will be auto-removed when it has no particles left.<br/>
1222
+ * By default it is false.<br/>
1223
+ * </p>
1224
+ * @return {Boolean}
1225
+ */
1226
+ isAutoRemoveOnFinish:function () {
1227
+ return this.autoRemoveOnFinish;
1228
+ },
1229
+
1230
+ /**
1231
+ * <p> set whether or not the node will be auto-removed when it has no particles left.<br/>
1232
+ * By default it is false.<br/>
1233
+ * </p>
1234
+ * @param {Boolean} isAutoRemoveOnFinish
1235
+ */
1236
+ setAutoRemoveOnFinish:function (isAutoRemoveOnFinish) {
1237
+ this.autoRemoveOnFinish = isAutoRemoveOnFinish;
1238
+ },
1239
+
1240
+ /**
1241
+ * return kind of emitter modes
1242
+ * @return {Number}
1243
+ */
1244
+ getEmitterMode:function () {
1245
+ return this.emitterMode;
1246
+ },
1247
+
1248
+ /**
1249
+ * <p>Switch between different kind of emitter modes:<br/>
1250
+ * - CCParticleSystem.MODE_GRAVITY: uses gravity, speed, radial and tangential acceleration<br/>
1251
+ * - CCParticleSystem.MODE_RADIUS: uses radius movement + rotation <br/>
1252
+ * </p>
1253
+ * @param {Number} emitterMode
1254
+ */
1255
+ setEmitterMode:function (emitterMode) {
1256
+ this.emitterMode = emitterMode;
1257
+ },
1258
+
1259
+ /**
1260
+ * initializes a cc.ParticleSystem
1261
+ */
1262
+ init:function () {
1263
+ return this.initWithTotalParticles(150);
1264
+ },
1265
+
1266
+ /**
1267
+ * <p>
1268
+ * initializes a CCParticleSystem from a plist file. <br/>
1269
+ * This plist files can be creted manually or with Particle Designer:<br/>
1270
+ * http://particledesigner.71squared.com/
1271
+ * </p>
1272
+ * @param {String} plistFile
1273
+ * @return {boolean}
1274
+ */
1275
+ initWithFile:function (plistFile) {
1276
+ this._plistFile = plistFile;
1277
+ var dict = cc.loader.getRes(plistFile);
1278
+ if(!dict){
1279
+ cc.log("cc.ParticleSystem.initWithFile(): Particles: file not found");
1280
+ return false;
1281
+ }
1282
+
1283
+ // XXX compute path from a path, should define a function somewhere to do it
1284
+ return this.initWithDictionary(dict, "");
1285
+ },
1286
+
1287
+ /**
1288
+ * return bounding box of particle system in world space
1289
+ * @return {cc.Rect}
1290
+ */
1291
+ getBoundingBoxToWorld:function () {
1292
+ return cc.rect(0, 0, cc._canvas.width, cc._canvas.height);
1293
+ },
1294
+
1295
+ /**
1296
+ * initializes a particle system from a NSDictionary and the path from where to load the png
1297
+ * @param {object} dictionary
1298
+ * @param {String} dirname
1299
+ * @return {Boolean}
1300
+ */
1301
+ initWithDictionary:function (dictionary, dirname) {
1302
+ var ret = false;
1303
+ var buffer = null;
1304
+ var image = null;
1305
+ var locValueForKey = this._valueForKey;
1306
+
1307
+ var maxParticles = parseInt(locValueForKey("maxParticles", dictionary));
1308
+ // self, not super
1309
+ if (this.initWithTotalParticles(maxParticles)) {
1310
+ // angle
1311
+ this.angle = parseFloat(locValueForKey("angle", dictionary));
1312
+ this.angleVar = parseFloat(locValueForKey("angleVariance", dictionary));
1313
+
1314
+ // duration
1315
+ this.duration = parseFloat(locValueForKey("duration", dictionary));
1316
+
1317
+ // blend function
1318
+ this._blendFunc.src = parseInt(locValueForKey("blendFuncSource", dictionary));
1319
+ this._blendFunc.dst = parseInt(locValueForKey("blendFuncDestination", dictionary));
1320
+
1321
+ // color
1322
+ var locStartColor = this._startColor;
1323
+ locStartColor.r = parseFloat(locValueForKey("startColorRed", dictionary)) * 255;
1324
+ locStartColor.g = parseFloat(locValueForKey("startColorGreen", dictionary)) * 255;
1325
+ locStartColor.b = parseFloat(locValueForKey("startColorBlue", dictionary)) * 255;
1326
+ locStartColor.a = parseFloat(locValueForKey("startColorAlpha", dictionary)) * 255;
1327
+
1328
+ var locStartColorVar = this._startColorVar;
1329
+ locStartColorVar.r = parseFloat(locValueForKey("startColorVarianceRed", dictionary)) * 255;
1330
+ locStartColorVar.g = parseFloat(locValueForKey("startColorVarianceGreen", dictionary)) * 255;
1331
+ locStartColorVar.b = parseFloat(locValueForKey("startColorVarianceBlue", dictionary)) * 255;
1332
+ locStartColorVar.a = parseFloat(locValueForKey("startColorVarianceAlpha", dictionary)) * 255;
1333
+
1334
+ var locEndColor = this._endColor;
1335
+ locEndColor.r = parseFloat(locValueForKey("finishColorRed", dictionary)) * 255;
1336
+ locEndColor.g = parseFloat(locValueForKey("finishColorGreen", dictionary)) * 255;
1337
+ locEndColor.b = parseFloat(locValueForKey("finishColorBlue", dictionary)) * 255;
1338
+ locEndColor.a = parseFloat(locValueForKey("finishColorAlpha", dictionary)) * 255;
1339
+
1340
+ var locEndColorVar = this._endColorVar;
1341
+ locEndColorVar.r = parseFloat(locValueForKey("finishColorVarianceRed", dictionary)) * 255;
1342
+ locEndColorVar.g = parseFloat(locValueForKey("finishColorVarianceGreen", dictionary)) * 255;
1343
+ locEndColorVar.b = parseFloat(locValueForKey("finishColorVarianceBlue", dictionary)) * 255;
1344
+ locEndColorVar.a = parseFloat(locValueForKey("finishColorVarianceAlpha", dictionary)) * 255;
1345
+
1346
+ // particle size
1347
+ this.startSize = parseFloat(locValueForKey("startParticleSize", dictionary));
1348
+ this.startSizeVar = parseFloat(locValueForKey("startParticleSizeVariance", dictionary));
1349
+ this.endSize = parseFloat(locValueForKey("finishParticleSize", dictionary));
1350
+ this.endSizeVar = parseFloat(locValueForKey("finishParticleSizeVariance", dictionary));
1351
+
1352
+ // position
1353
+ this.setPosition(parseFloat(locValueForKey("sourcePositionx", dictionary)),
1354
+ parseFloat(locValueForKey("sourcePositiony", dictionary)));
1355
+ this._posVar.x = parseFloat(locValueForKey("sourcePositionVariancex", dictionary));
1356
+ this._posVar.y = parseFloat(locValueForKey("sourcePositionVariancey", dictionary));
1357
+
1358
+ // Spinning
1359
+ this.startSpin = parseFloat(locValueForKey("rotationStart", dictionary));
1360
+ this.startSpinVar = parseFloat(locValueForKey("rotationStartVariance", dictionary));
1361
+ this.endSpin = parseFloat(locValueForKey("rotationEnd", dictionary));
1362
+ this.endSpinVar = parseFloat(locValueForKey("rotationEndVariance", dictionary));
1363
+
1364
+ this.emitterMode = parseInt(locValueForKey("emitterType", dictionary));
1365
+
1366
+ // Mode A: Gravity + tangential accel + radial accel
1367
+ if (this.emitterMode == cc.ParticleSystem.MODE_GRAVITY) {
1368
+ var locModeA = this.modeA;
1369
+ // gravity
1370
+ locModeA.gravity.x = parseFloat(locValueForKey("gravityx", dictionary));
1371
+ locModeA.gravity.y = parseFloat(locValueForKey("gravityy", dictionary));
1372
+
1373
+ // speed
1374
+ locModeA.speed = parseFloat(locValueForKey("speed", dictionary));
1375
+ locModeA.speedVar = parseFloat(locValueForKey("speedVariance", dictionary));
1376
+
1377
+ // radial acceleration
1378
+ var pszTmp = locValueForKey("radialAcceleration", dictionary);
1379
+ locModeA.radialAccel = (pszTmp) ? parseFloat(pszTmp) : 0;
1380
+
1381
+ pszTmp = locValueForKey("radialAccelVariance", dictionary);
1382
+ locModeA.radialAccelVar = (pszTmp) ? parseFloat(pszTmp) : 0;
1383
+
1384
+ // tangential acceleration
1385
+ pszTmp = locValueForKey("tangentialAcceleration", dictionary);
1386
+ locModeA.tangentialAccel = (pszTmp) ? parseFloat(pszTmp) : 0;
1387
+
1388
+ pszTmp = locValueForKey("tangentialAccelVariance", dictionary);
1389
+ locModeA.tangentialAccelVar = (pszTmp) ? parseFloat(pszTmp) : 0;
1390
+
1391
+ // rotation is dir
1392
+ var locRotationIsDir = locValueForKey("rotationIsDir", dictionary).toLowerCase();
1393
+ locModeA.rotationIsDir = (locRotationIsDir != null && (locRotationIsDir === "true" || locRotationIsDir === "1"));
1394
+ } else if (this.emitterMode == cc.ParticleSystem.MODE_RADIUS) {
1395
+ // or Mode B: radius movement
1396
+ var locModeB = this.modeB;
1397
+ locModeB.startRadius = parseFloat(locValueForKey("maxRadius", dictionary));
1398
+ locModeB.startRadiusVar = parseFloat(locValueForKey("maxRadiusVariance", dictionary));
1399
+ locModeB.endRadius = parseFloat(locValueForKey("minRadius", dictionary));
1400
+ locModeB.endRadiusVar = 0;
1401
+ locModeB.rotatePerSecond = parseFloat(locValueForKey("rotatePerSecond", dictionary));
1402
+ locModeB.rotatePerSecondVar = parseFloat(locValueForKey("rotatePerSecondVariance", dictionary));
1403
+ } else {
1404
+ cc.log("cc.ParticleSystem.initWithDictionary(): Invalid emitterType in config file");
1405
+ return false;
1406
+ }
1407
+
1408
+ // life span
1409
+ this.life = parseFloat(locValueForKey("particleLifespan", dictionary));
1410
+ this.lifeVar = parseFloat(locValueForKey("particleLifespanVariance", dictionary));
1411
+
1412
+ // emission Rate
1413
+ this.emissionRate = this._totalParticles / this.life;
1414
+
1415
+ //don't get the internal texture if a batchNode is used
1416
+ if (!this._batchNode) {
1417
+ // Set a compatible default for the alpha transfer
1418
+ this._opacityModifyRGB = false;
1419
+
1420
+ // texture
1421
+ // Try to get the texture from the cache
1422
+ var textureName = locValueForKey("textureFileName", dictionary);
1423
+ var imgPath = cc.path.changeBasename(this._plistFile, textureName);
1424
+ var tex = cc.textureCache.getTextureForKey(imgPath);
1425
+
1426
+ if (tex) {
1427
+ this.setTexture(tex);
1428
+ } else {
1429
+ var textureData = locValueForKey("textureImageData", dictionary);
1430
+
1431
+ if (!textureData || textureData.length === 0) {
1432
+ tex = cc.textureCache.addImage(imgPath);
1433
+ if (!tex)
1434
+ return false;
1435
+ this.setTexture(tex);
1436
+ } else {
1437
+ buffer = cc.unzipBase64AsArray(textureData, 1);
1438
+ if (!buffer) {
1439
+ cc.log("cc.ParticleSystem: error decoding or ungzipping textureImageData");
1440
+ return false;
1441
+ }
1442
+
1443
+ var imageFormat = cc.getImageFormatByData(buffer);
1444
+
1445
+ if(imageFormat !== cc.FMT_TIFF && imageFormat !== cc.FMT_PNG){
1446
+ cc.log("cc.ParticleSystem: unknown image format with Data");
1447
+ return false;
1448
+ }
1449
+
1450
+ var canvasObj = cc.newElement("canvas");
1451
+ if(imageFormat === cc.FMT_PNG){
1452
+ var myPngObj = new cc.PNGReader(buffer);
1453
+ myPngObj.render(canvasObj);
1454
+ } else {
1455
+ var myTIFFObj = cc.tiffReader;
1456
+ myTIFFObj.parseTIFF(buffer,canvasObj);
1457
+ }
1458
+
1459
+ cc.textureCache.cacheImage(imgPath, canvasObj);
1460
+
1461
+ var addTexture = cc.textureCache.getTextureForKey(imgPath);
1462
+ if(!addTexture)
1463
+ cc.log("cc.ParticleSystem.initWithDictionary() : error loading the texture");
1464
+ this.setTexture(addTexture);
1465
+ }
1466
+ }
1467
+ }
1468
+ ret = true;
1469
+ }
1470
+ return ret;
1471
+ },
1472
+
1473
+ /**
1474
+ * Initializes a system with a fixed number of particles
1475
+ * @param {Number} numberOfParticles
1476
+ * @return {Boolean}
1477
+ */
1478
+ initWithTotalParticles:function (numberOfParticles) {
1479
+ this._totalParticles = numberOfParticles;
1480
+
1481
+ var i, locParticles = this._particles;
1482
+ locParticles.length = 0;
1483
+ for(i = 0; i< numberOfParticles; i++){
1484
+ locParticles[i] = new cc.Particle();
1485
+ }
1486
+
1487
+ if (!locParticles) {
1488
+ cc.log("Particle system: not enough memory");
1489
+ return false;
1490
+ }
1491
+ this._allocatedParticles = numberOfParticles;
1492
+
1493
+ if (this._batchNode)
1494
+ for (i = 0; i < this._totalParticles; i++)
1495
+ locParticles[i].atlasIndex = i;
1496
+
1497
+ // default, active
1498
+ this._isActive = true;
1499
+
1500
+ // default blend function
1501
+ this._blendFunc.src = cc.BLEND_SRC;
1502
+ this._blendFunc.dst = cc.BLEND_DST;
1503
+
1504
+ // default movement type;
1505
+ this.positionType = cc.ParticleSystem.TYPE_FREE;
1506
+
1507
+ // by default be in mode A:
1508
+ this.emitterMode = cc.ParticleSystem.MODE_GRAVITY;
1509
+
1510
+ // default: modulate
1511
+ // XXX: not used
1512
+ // colorModulate = YES;
1513
+ this.autoRemoveOnFinish = false;
1514
+
1515
+ //for batchNode
1516
+ this._transformSystemDirty = false;
1517
+
1518
+ // udpate after action in run!
1519
+ this.scheduleUpdateWithPriority(1);
1520
+ this._renderCmd._initWithTotalParticles(numberOfParticles);
1521
+ return true;
1522
+ },
1523
+
1524
+ /**
1525
+ * Unschedules the "update" method.
1526
+ * @function
1527
+ * @see scheduleUpdate();
1528
+ */
1529
+ destroyParticleSystem:function () {
1530
+ this.unscheduleUpdate();
1531
+ },
1532
+
1533
+ /**
1534
+ * Add a particle to the emitter
1535
+ * @return {Boolean}
1536
+ */
1537
+ addParticle: function () {
1538
+ if (this.isFull())
1539
+ return false;
1540
+
1541
+ var particle = this._renderCmd.addParticle();
1542
+ this.initParticle(particle);
1543
+ ++this.particleCount;
1544
+ return true;
1545
+ },
1546
+
1547
+ /**
1548
+ * Initializes a particle
1549
+ * @param {cc.Particle} particle
1550
+ */
1551
+ initParticle:function (particle) {
1552
+ var locRandomMinus11 = cc.randomMinus1To1;
1553
+ // timeToLive
1554
+ // no negative life. prevent division by 0
1555
+ particle.timeToLive = this.life + this.lifeVar * locRandomMinus11();
1556
+ particle.timeToLive = Math.max(0, particle.timeToLive);
1557
+
1558
+ // position
1559
+ particle.pos.x = this._sourcePosition.x + this._posVar.x * locRandomMinus11();
1560
+ particle.pos.y = this._sourcePosition.y + this._posVar.y * locRandomMinus11();
1561
+
1562
+ // Color
1563
+ var start, end;
1564
+ var locStartColor = this._startColor, locStartColorVar = this._startColorVar;
1565
+ var locEndColor = this._endColor, locEndColorVar = this._endColorVar;
1566
+ start = {
1567
+ r: cc.clampf(locStartColor.r + locStartColorVar.r * locRandomMinus11(), 0, 255),
1568
+ g: cc.clampf(locStartColor.g + locStartColorVar.g * locRandomMinus11(), 0, 255),
1569
+ b: cc.clampf(locStartColor.b + locStartColorVar.b * locRandomMinus11(), 0, 255),
1570
+ a: cc.clampf(locStartColor.a + locStartColorVar.a * locRandomMinus11(), 0, 255)
1571
+ };
1572
+ end = {
1573
+ r: cc.clampf(locEndColor.r + locEndColorVar.r * locRandomMinus11(), 0, 255),
1574
+ g: cc.clampf(locEndColor.g + locEndColorVar.g * locRandomMinus11(), 0, 255),
1575
+ b: cc.clampf(locEndColor.b + locEndColorVar.b * locRandomMinus11(), 0, 255),
1576
+ a: cc.clampf(locEndColor.a + locEndColorVar.a * locRandomMinus11(), 0, 255)
1577
+ };
1578
+
1579
+ particle.color = start;
1580
+ var locParticleDeltaColor = particle.deltaColor, locParticleTimeToLive = particle.timeToLive;
1581
+ locParticleDeltaColor.r = (end.r - start.r) / locParticleTimeToLive;
1582
+ locParticleDeltaColor.g = (end.g - start.g) / locParticleTimeToLive;
1583
+ locParticleDeltaColor.b = (end.b - start.b) / locParticleTimeToLive;
1584
+ locParticleDeltaColor.a = (end.a - start.a) / locParticleTimeToLive;
1585
+
1586
+ // size
1587
+ var startS = this.startSize + this.startSizeVar * locRandomMinus11();
1588
+ startS = Math.max(0, startS); // No negative value
1589
+
1590
+ particle.size = startS;
1591
+ if (this.endSize === cc.ParticleSystem.START_SIZE_EQUAL_TO_END_SIZE) {
1592
+ particle.deltaSize = 0;
1593
+ } else {
1594
+ var endS = this.endSize + this.endSizeVar * locRandomMinus11();
1595
+ endS = Math.max(0, endS); // No negative values
1596
+ particle.deltaSize = (endS - startS) / locParticleTimeToLive;
1597
+ }
1598
+
1599
+ // rotation
1600
+ var startA = this.startSpin + this.startSpinVar * locRandomMinus11();
1601
+ var endA = this.endSpin + this.endSpinVar * locRandomMinus11();
1602
+ particle.rotation = startA;
1603
+ particle.deltaRotation = (endA - startA) / locParticleTimeToLive;
1604
+
1605
+ // position
1606
+ if (this.positionType == cc.ParticleSystem.TYPE_FREE)
1607
+ particle.startPos = this.convertToWorldSpace(this._pointZeroForParticle);
1608
+ else if (this.positionType == cc.ParticleSystem.TYPE_RELATIVE){
1609
+ particle.startPos.x = this._position.x;
1610
+ particle.startPos.y = this._position.y;
1611
+ }
1612
+
1613
+ // direction
1614
+ var a = cc.degreesToRadians(this.angle + this.angleVar * locRandomMinus11());
1615
+
1616
+ // Mode Gravity: A
1617
+ if (this.emitterMode === cc.ParticleSystem.MODE_GRAVITY) {
1618
+ var locModeA = this.modeA, locParticleModeA = particle.modeA;
1619
+ var s = locModeA.speed + locModeA.speedVar * locRandomMinus11();
1620
+
1621
+ // direction
1622
+ locParticleModeA.dir.x = Math.cos(a);
1623
+ locParticleModeA.dir.y = Math.sin(a);
1624
+ cc.pMultIn(locParticleModeA.dir, s);
1625
+
1626
+ // radial accel
1627
+ locParticleModeA.radialAccel = locModeA.radialAccel + locModeA.radialAccelVar * locRandomMinus11();
1628
+
1629
+ // tangential accel
1630
+ locParticleModeA.tangentialAccel = locModeA.tangentialAccel + locModeA.tangentialAccelVar * locRandomMinus11();
1631
+
1632
+ // rotation is dir
1633
+ if(locModeA.rotationIsDir)
1634
+ particle.rotation = -cc.radiansToDegrees(cc.pToAngle(locParticleModeA.dir));
1635
+ } else {
1636
+ // Mode Radius: B
1637
+ var locModeB = this.modeB, locParitlceModeB = particle.modeB;
1638
+
1639
+ // Set the default diameter of the particle from the source position
1640
+ var startRadius = locModeB.startRadius + locModeB.startRadiusVar * locRandomMinus11();
1641
+ var endRadius = locModeB.endRadius + locModeB.endRadiusVar * locRandomMinus11();
1642
+
1643
+ locParitlceModeB.radius = startRadius;
1644
+ locParitlceModeB.deltaRadius = (locModeB.endRadius === cc.ParticleSystem.START_RADIUS_EQUAL_TO_END_RADIUS) ? 0 : (endRadius - startRadius) / locParticleTimeToLive;
1645
+
1646
+ locParitlceModeB.angle = a;
1647
+ locParitlceModeB.degreesPerSecond = cc.degreesToRadians(locModeB.rotatePerSecond + locModeB.rotatePerSecondVar * locRandomMinus11());
1648
+ }
1649
+ },
1650
+
1651
+ /**
1652
+ * stop emitting particles. Running particles will continue to run until they die
1653
+ */
1654
+ stopSystem:function () {
1655
+ this._isActive = false;
1656
+ this._elapsed = this.duration;
1657
+ this._emitCounter = 0;
1658
+ },
1659
+
1660
+ /**
1661
+ * Kill all living particles.
1662
+ */
1663
+ resetSystem:function () {
1664
+ this._isActive = true;
1665
+ this._elapsed = 0;
1666
+ var locParticles = this._particles;
1667
+ for (this._particleIdx = 0; this._particleIdx < this.particleCount; ++this._particleIdx)
1668
+ locParticles[this._particleIdx].timeToLive = 0 ;
1669
+ },
1670
+
1671
+ /**
1672
+ * whether or not the system is full
1673
+ * @return {Boolean}
1674
+ */
1675
+ isFull:function () {
1676
+ return (this.particleCount >= this._totalParticles);
1677
+ },
1678
+
1679
+ /**
1680
+ * should be overridden by subclasses
1681
+ * @param {cc.Particle} particle
1682
+ * @param {cc.Point} newPosition
1683
+ */
1684
+ updateQuadWithParticle:function (particle, newPosition) {
1685
+ this._renderCmd.updateQuadWithParticle(particle, newPosition);
1686
+ },
1687
+
1688
+ /**
1689
+ * should be overridden by subclasses
1690
+ */
1691
+ postStep:function () {
1692
+ this._renderCmd.postStep();
1693
+ },
1694
+
1695
+ /**
1696
+ * update emitter's status
1697
+ * @override
1698
+ * @param {Number} dt delta time
1699
+ */
1700
+ update:function (dt) {
1701
+ if (this._isActive && this.emissionRate) {
1702
+ var rate = 1.0 / this.emissionRate;
1703
+ //issue #1201, prevent bursts of particles, due to too high emitCounter
1704
+ if (this.particleCount < this._totalParticles)
1705
+ this._emitCounter += dt;
1706
+
1707
+ while ((this.particleCount < this._totalParticles) && (this._emitCounter > rate)) {
1708
+ this.addParticle();
1709
+ this._emitCounter -= rate;
1710
+ }
1711
+
1712
+ this._elapsed += dt;
1713
+ if (this.duration != -1 && this.duration < this._elapsed)
1714
+ this.stopSystem();
1715
+ }
1716
+ this._particleIdx = 0;
1717
+
1718
+ var currentPosition = cc.Particle.TemporaryPoints[0];
1719
+ if (this.positionType == cc.ParticleSystem.TYPE_FREE) {
1720
+ cc.pIn(currentPosition, this.convertToWorldSpace(this._pointZeroForParticle));
1721
+ } else if (this.positionType == cc.ParticleSystem.TYPE_RELATIVE) {
1722
+ currentPosition.x = this._position.x;
1723
+ currentPosition.y = this._position.y;
1724
+ }
1725
+
1726
+ if (this._visible) {
1727
+ // Used to reduce memory allocation / creation within the loop
1728
+ var tpa = cc.Particle.TemporaryPoints[1],
1729
+ tpb = cc.Particle.TemporaryPoints[2],
1730
+ tpc = cc.Particle.TemporaryPoints[3];
1731
+
1732
+ var locParticles = this._particles;
1733
+ while (this._particleIdx < this.particleCount) {
1734
+
1735
+ // Reset the working particles
1736
+ cc.pZeroIn(tpa);
1737
+ cc.pZeroIn(tpb);
1738
+ cc.pZeroIn(tpc);
1739
+
1740
+ var selParticle = locParticles[this._particleIdx];
1741
+
1742
+ // life
1743
+ selParticle.timeToLive -= dt;
1744
+
1745
+ if (selParticle.timeToLive > 0) {
1746
+ // Mode A: gravity, direction, tangential accel & radial accel
1747
+ if (this.emitterMode == cc.ParticleSystem.MODE_GRAVITY) {
1748
+
1749
+ var tmp = tpc, radial = tpa, tangential = tpb;
1750
+
1751
+ // radial acceleration
1752
+ if (selParticle.pos.x || selParticle.pos.y) {
1753
+ cc.pIn(radial, selParticle.pos);
1754
+ cc.pNormalizeIn(radial);
1755
+ } else {
1756
+ cc.pZeroIn(radial);
1757
+ }
1758
+
1759
+ cc.pIn(tangential, radial);
1760
+ cc.pMultIn(radial, selParticle.modeA.radialAccel);
1761
+
1762
+ // tangential acceleration
1763
+ var newy = tangential.x;
1764
+ tangential.x = -tangential.y;
1765
+ tangential.y = newy;
1766
+
1767
+ cc.pMultIn(tangential, selParticle.modeA.tangentialAccel);
1768
+
1769
+ cc.pIn(tmp, radial);
1770
+ cc.pAddIn(tmp, tangential);
1771
+ cc.pAddIn(tmp, this.modeA.gravity);
1772
+ cc.pMultIn(tmp, dt);
1773
+ cc.pAddIn(selParticle.modeA.dir, tmp);
1774
+
1775
+
1776
+ cc.pIn(tmp, selParticle.modeA.dir);
1777
+ cc.pMultIn(tmp, dt);
1778
+ cc.pAddIn(selParticle.pos, tmp);
1779
+ } else {
1780
+ // Mode B: radius movement
1781
+ var selModeB = selParticle.modeB;
1782
+ // Update the angle and radius of the particle.
1783
+ selModeB.angle += selModeB.degreesPerSecond * dt;
1784
+ selModeB.radius += selModeB.deltaRadius * dt;
1785
+
1786
+ selParticle.pos.x = -Math.cos(selModeB.angle) * selModeB.radius;
1787
+ selParticle.pos.y = -Math.sin(selModeB.angle) * selModeB.radius;
1788
+ }
1789
+
1790
+ // color
1791
+ this._renderCmd._updateDeltaColor(selParticle, dt);
1792
+
1793
+ // size
1794
+ selParticle.size += (selParticle.deltaSize * dt);
1795
+ selParticle.size = Math.max(0, selParticle.size);
1796
+
1797
+ // angle
1798
+ selParticle.rotation += (selParticle.deltaRotation * dt);
1799
+
1800
+ //
1801
+ // update values in quad
1802
+ //
1803
+ var newPos = tpa;
1804
+ if (this.positionType == cc.ParticleSystem.TYPE_FREE || this.positionType == cc.ParticleSystem.TYPE_RELATIVE) {
1805
+ var diff = tpb;
1806
+ cc.pIn(diff, currentPosition);
1807
+ cc.pSubIn(diff, selParticle.startPos);
1808
+
1809
+ cc.pIn(newPos, selParticle.pos);
1810
+ cc.pSubIn(newPos, diff);
1811
+ } else {
1812
+ cc.pIn(newPos, selParticle.pos);
1813
+ }
1814
+
1815
+ // translate newPos to correct position, since matrix transform isn't performed in batchnode
1816
+ // don't update the particle with the new position information, it will interfere with the radius and tangential calculations
1817
+ if (this._batchNode) {
1818
+ newPos.x += this._position.x;
1819
+ newPos.y += this._position.y;
1820
+ }
1821
+ this._renderCmd.updateParticlePosition(selParticle, newPos);
1822
+
1823
+ // update particle counter
1824
+ ++this._particleIdx;
1825
+ } else {
1826
+ // life < 0
1827
+ var currentIndex = selParticle.atlasIndex;
1828
+ if(this._particleIdx !== this.particleCount -1){
1829
+ var deadParticle = locParticles[this._particleIdx];
1830
+ locParticles[this._particleIdx] = locParticles[this.particleCount -1];
1831
+ locParticles[this.particleCount -1] = deadParticle;
1832
+ }
1833
+ if (this._batchNode) {
1834
+ //disable the switched particle
1835
+ this._batchNode.disableParticle(this.atlasIndex + currentIndex);
1836
+ //switch indexes
1837
+ locParticles[this.particleCount - 1].atlasIndex = currentIndex;
1838
+ }
1839
+
1840
+ --this.particleCount;
1841
+ if (this.particleCount == 0 && this.autoRemoveOnFinish) {
1842
+ this.unscheduleUpdate();
1843
+ this._parent.removeChild(this, true);
1844
+ return;
1845
+ }
1846
+ }
1847
+ }
1848
+ this._transformSystemDirty = false;
1849
+ }
1850
+
1851
+ if (!this._batchNode)
1852
+ this.postStep();
1853
+ },
1854
+
1855
+ /**
1856
+ * update emitter's status (dt = 0)
1857
+ */
1858
+ updateWithNoTime:function () {
1859
+ this.update(0);
1860
+ },
1861
+
1862
+ //
1863
+ // return the string found by key in dict.
1864
+ // @param {string} key
1865
+ // @param {object} dict
1866
+ // @return {String} "" if not found; return the string if found.
1867
+ // @private
1868
+ //
1869
+ _valueForKey:function (key, dict) {
1870
+ if (dict) {
1871
+ var pString = dict[key];
1872
+ return pString != null ? pString : "";
1873
+ }
1874
+ return "";
1875
+ },
1876
+
1877
+ _updateBlendFunc:function () {
1878
+ if(this._batchNode){
1879
+ cc.log("Can't change blending functions when the particle is being batched");
1880
+ return;
1881
+ }
1882
+
1883
+ var locTexture = this._texture;
1884
+ if (locTexture && locTexture instanceof cc.Texture2D) {
1885
+ this._opacityModifyRGB = false;
1886
+ var locBlendFunc = this._blendFunc;
1887
+ if (locBlendFunc.src == cc.BLEND_SRC && locBlendFunc.dst == cc.BLEND_DST) {
1888
+ if (locTexture.hasPremultipliedAlpha()) {
1889
+ this._opacityModifyRGB = true;
1890
+ } else {
1891
+ locBlendFunc.src = cc.SRC_ALPHA;
1892
+ locBlendFunc.dst = cc.ONE_MINUS_SRC_ALPHA;
1893
+ }
1894
+ }
1895
+ }
1896
+ },
1897
+
1898
+ /**
1899
+ * to copy object with deep copy.
1900
+ * returns a clone of action.
1901
+ *
1902
+ * @return {cc.ParticleSystem}
1903
+ */
1904
+ clone:function () {
1905
+ var retParticle = new cc.ParticleSystem();
1906
+
1907
+ // self, not super
1908
+ if (retParticle.initWithTotalParticles(this.getTotalParticles())) {
1909
+ // angle
1910
+ retParticle.setAngle(this.getAngle());
1911
+ retParticle.setAngleVar(this.getAngleVar());
1912
+
1913
+ // duration
1914
+ retParticle.setDuration(this.getDuration());
1915
+
1916
+ // blend function
1917
+ var blend = this.getBlendFunc();
1918
+ retParticle.setBlendFunc(blend.src,blend.dst);
1919
+
1920
+ // color
1921
+ retParticle.setStartColor(this.getStartColor());
1922
+
1923
+ retParticle.setStartColorVar(this.getStartColorVar());
1924
+
1925
+ retParticle.setEndColor(this.getEndColor());
1926
+
1927
+ retParticle.setEndColorVar(this.getEndColorVar());
1928
+
1929
+ // this size
1930
+ retParticle.setStartSize(this.getStartSize());
1931
+ retParticle.setStartSizeVar(this.getStartSizeVar());
1932
+ retParticle.setEndSize(this.getEndSize());
1933
+ retParticle.setEndSizeVar(this.getEndSizeVar());
1934
+
1935
+ // position
1936
+ retParticle.setPosition(cc.p(this.x, this.y));
1937
+ retParticle.setPosVar(cc.p(this.getPosVar().x,this.getPosVar().y));
1938
+
1939
+ // Spinning
1940
+ retParticle.setStartSpin(this.getStartSpin()||0);
1941
+ retParticle.setStartSpinVar(this.getStartSpinVar()||0);
1942
+ retParticle.setEndSpin(this.getEndSpin()||0);
1943
+ retParticle.setEndSpinVar(this.getEndSpinVar()||0);
1944
+
1945
+ retParticle.setEmitterMode(this.getEmitterMode());
1946
+
1947
+ // Mode A: Gravity + tangential accel + radial accel
1948
+ if (this.getEmitterMode() == cc.ParticleSystem.MODE_GRAVITY) {
1949
+ // gravity
1950
+ var gra = this.getGravity();
1951
+ retParticle.setGravity(cc.p(gra.x,gra.y));
1952
+
1953
+ // speed
1954
+ retParticle.setSpeed(this.getSpeed());
1955
+ retParticle.setSpeedVar(this.getSpeedVar());
1956
+
1957
+ // radial acceleration
1958
+ retParticle.setRadialAccel(this.getRadialAccel());
1959
+ retParticle.setRadialAccelVar(this.getRadialAccelVar());
1960
+
1961
+ // tangential acceleration
1962
+ retParticle.setTangentialAccel(this.getTangentialAccel());
1963
+ retParticle.setTangentialAccelVar(this.getTangentialAccelVar());
1964
+
1965
+ } else if (this.getEmitterMode() == cc.ParticleSystem.MODE_RADIUS) {
1966
+ // or Mode B: radius movement
1967
+ retParticle.setStartRadius(this.getStartRadius());
1968
+ retParticle.setStartRadiusVar(this.getStartRadiusVar());
1969
+ retParticle.setEndRadius(this.getEndRadius());
1970
+ retParticle.setEndRadiusVar(this.getEndRadiusVar());
1971
+
1972
+ retParticle.setRotatePerSecond(this.getRotatePerSecond());
1973
+ retParticle.setRotatePerSecondVar(this.getRotatePerSecondVar());
1974
+ }
1975
+
1976
+ // life span
1977
+ retParticle.setLife(this.getLife());
1978
+ retParticle.setLifeVar(this.getLifeVar());
1979
+
1980
+ // emission Rate
1981
+ retParticle.setEmissionRate(this.getEmissionRate());
1982
+
1983
+ //don't get the internal texture if a batchNode is used
1984
+ if (!this.getBatchNode()) {
1985
+ // Set a compatible default for the alpha transfer
1986
+ retParticle.setOpacityModifyRGB(this.isOpacityModifyRGB());
1987
+ // texture
1988
+ var texture = this.getTexture();
1989
+ if(texture){
1990
+ var size = texture.getContentSize();
1991
+ retParticle.setTextureWithRect(texture, cc.rect(0, 0, size.width, size.height));
1992
+ }
1993
+ }
1994
+ }
1995
+ return retParticle;
1996
+ },
1997
+
1998
+ /**
1999
+ * <p> Sets a new CCSpriteFrame as particle.</br>
2000
+ * WARNING: this method is experimental. Use setTextureWithRect instead.
2001
+ * </p>
2002
+ * @param {cc.SpriteFrame} spriteFrame
2003
+ */
2004
+ setDisplayFrame: function (spriteFrame) {
2005
+ if (!spriteFrame)
2006
+ return;
2007
+
2008
+ var locOffset = spriteFrame.getOffsetInPixels();
2009
+ if (locOffset.x != 0 || locOffset.y != 0)
2010
+ cc.log("cc.ParticleSystem.setDisplayFrame(): QuadParticle only supports SpriteFrames with no offsets");
2011
+
2012
+ // update texture before updating texture rect
2013
+ var texture = spriteFrame.getTexture(), locTexture = this._texture;
2014
+ if (locTexture != texture)
2015
+ this.setTexture(texture);
2016
+ },
2017
+
2018
+ /**
2019
+ * Sets a new texture with a rect. The rect is in Points.
2020
+ * @param {cc.Texture2D} texture
2021
+ * @param {cc.Rect} rect
2022
+ */
2023
+ setTextureWithRect: function (texture, rect) {
2024
+ var locTexture = this._texture;
2025
+ if (locTexture != texture) {
2026
+ this._texture = texture;
2027
+ this._updateBlendFunc();
2028
+ }
2029
+ this.initTexCoordsWithRect(rect);
2030
+ },
2031
+
2032
+ /**
2033
+ * listen the event that coming to foreground on Android (An empty function for native)
2034
+ * @param {cc.Class} obj
2035
+ */
2036
+ listenBackToForeground:function (obj) {
2037
+ //do nothing
2038
+ }
2039
+ });
2040
+
2041
+ var _p = cc.ParticleSystem.prototype;
2042
+
2043
+ // Extended properties
2044
+ /** @expose */
2045
+ _p.opacityModifyRGB;
2046
+ cc.defineGetterSetter(_p, "opacityModifyRGB", _p.isOpacityModifyRGB, _p.setOpacityModifyRGB);
2047
+ /** @expose */
2048
+ _p.batchNode;
2049
+ cc.defineGetterSetter(_p, "batchNode", _p.getBatchNode, _p.setBatchNode);
2050
+ /** @expose */
2051
+ _p.drawMode;
2052
+ cc.defineGetterSetter(_p, "drawMode", _p.getDrawMode, _p.setDrawMode);
2053
+ /** @expose */
2054
+ _p.shapeType;
2055
+ cc.defineGetterSetter(_p, "shapeType", _p.getShapeType, _p.setShapeType);
2056
+ /** @expose */
2057
+ _p.active;
2058
+ cc.defineGetterSetter(_p, "active", _p.isActive);
2059
+ /** @expose */
2060
+ _p.sourcePos;
2061
+ cc.defineGetterSetter(_p, "sourcePos", _p.getSourcePosition, _p.setSourcePosition);
2062
+ /** @expose */
2063
+ _p.posVar;
2064
+ cc.defineGetterSetter(_p, "posVar", _p.getPosVar, _p.setPosVar);
2065
+ /** @expose */
2066
+ _p.gravity;
2067
+ cc.defineGetterSetter(_p, "gravity", _p.getGravity, _p.setGravity);
2068
+ /** @expose */
2069
+ _p.speed;
2070
+ cc.defineGetterSetter(_p, "speed", _p.getSpeed, _p.setSpeed);
2071
+ /** @expose */
2072
+ _p.speedVar;
2073
+ cc.defineGetterSetter(_p, "speedVar", _p.getSpeedVar, _p.setSpeedVar);
2074
+ /** @expose */
2075
+ _p.tangentialAccel;
2076
+ cc.defineGetterSetter(_p, "tangentialAccel", _p.getTangentialAccel, _p.setTangentialAccel);
2077
+ /** @expose */
2078
+ _p.tangentialAccelVar;
2079
+ cc.defineGetterSetter(_p, "tangentialAccelVar", _p.getTangentialAccelVar, _p.setTangentialAccelVar);
2080
+ /** @expose */
2081
+ _p.radialAccel;
2082
+ cc.defineGetterSetter(_p, "radialAccel", _p.getRadialAccel, _p.setRadialAccel);
2083
+ /** @expose */
2084
+ _p.radialAccelVar;
2085
+ cc.defineGetterSetter(_p, "radialAccelVar", _p.getRadialAccelVar, _p.setRadialAccelVar);
2086
+ /** @expose */
2087
+ _p.rotationIsDir;
2088
+ cc.defineGetterSetter(_p, "rotationIsDir", _p.getRotationIsDir, _p.setRotationIsDir);
2089
+ /** @expose */
2090
+ _p.startRadius;
2091
+ cc.defineGetterSetter(_p, "startRadius", _p.getStartRadius, _p.setStartRadius);
2092
+ /** @expose */
2093
+ _p.startRadiusVar;
2094
+ cc.defineGetterSetter(_p, "startRadiusVar", _p.getStartRadiusVar, _p.setStartRadiusVar);
2095
+ /** @expose */
2096
+ _p.endRadius;
2097
+ cc.defineGetterSetter(_p, "endRadius", _p.getEndRadius, _p.setEndRadius);
2098
+ /** @expose */
2099
+ _p.endRadiusVar;
2100
+ cc.defineGetterSetter(_p, "endRadiusVar", _p.getEndRadiusVar, _p.setEndRadiusVar);
2101
+ /** @expose */
2102
+ _p.rotatePerS;
2103
+ cc.defineGetterSetter(_p, "rotatePerS", _p.getRotatePerSecond, _p.setRotatePerSecond);
2104
+ /** @expose */
2105
+ _p.rotatePerSVar;
2106
+ cc.defineGetterSetter(_p, "rotatePerSVar", _p.getRotatePerSecondVar, _p.setRotatePerSecondVar);
2107
+ /** @expose */
2108
+ _p.startColor;
2109
+ cc.defineGetterSetter(_p, "startColor", _p.getStartColor, _p.setStartColor);
2110
+ /** @expose */
2111
+ _p.startColorVar;
2112
+ cc.defineGetterSetter(_p, "startColorVar", _p.getStartColorVar, _p.setStartColorVar);
2113
+ /** @expose */
2114
+ _p.endColor;
2115
+ cc.defineGetterSetter(_p, "endColor", _p.getEndColor, _p.setEndColor);
2116
+ /** @expose */
2117
+ _p.endColorVar;
2118
+ cc.defineGetterSetter(_p, "endColorVar", _p.getEndColorVar, _p.setEndColorVar);
2119
+ /** @expose */
2120
+ _p.totalParticles;
2121
+ cc.defineGetterSetter(_p, "totalParticles", _p.getTotalParticles, _p.setTotalParticles);
2122
+ /** @expose */
2123
+ _p.texture;
2124
+ cc.defineGetterSetter(_p, "texture", _p.getTexture, _p.setTexture);
2125
+
2126
+
2127
+ /**
2128
+ * <p> return the string found by key in dict. <br/>
2129
+ * This plist files can be create manually or with Particle Designer:<br/>
2130
+ * http://particledesigner.71squared.com/<br/>
2131
+ * </p>
2132
+ * @deprecated since v3.0 please use new cc.ParticleSysytem(plistFile) instead.
2133
+ * @param {String|Number} plistFile
2134
+ * @return {cc.ParticleSystem}
2135
+ */
2136
+ cc.ParticleSystem.create = function (plistFile) {
2137
+ return new cc.ParticleSystem(plistFile);
2138
+ };
2139
+
2140
+ /**
2141
+ * <p> return the string found by key in dict. <br/>
2142
+ * This plist files can be create manually or with Particle Designer:<br/>
2143
+ * http://particledesigner.71squared.com/<br/>
2144
+ * </p>
2145
+ * @deprecated since v3.0 please use new cc.ParticleSysytem(plistFile) instead.
2146
+ * @function
2147
+ * @param {String|Number} plistFile
2148
+ * @return {cc.ParticleSystem}
2149
+ */
2150
+ cc.ParticleSystem.createWithTotalParticles = cc.ParticleSystem.create;
2151
+
2152
+ // Different modes
2153
+ /**
2154
+ * Mode A:Gravity + Tangential Accel + Radial Accel
2155
+ * @Class
2156
+ * @Construct
2157
+ * @param {cc.Point} [gravity=] Gravity value.
2158
+ * @param {Number} [speed=0] speed of each particle.
2159
+ * @param {Number} [speedVar=0] speed variance of each particle.
2160
+ * @param {Number} [tangentialAccel=0] tangential acceleration of each particle.
2161
+ * @param {Number} [tangentialAccelVar=0] tangential acceleration variance of each particle.
2162
+ * @param {Number} [radialAccel=0] radial acceleration of each particle.
2163
+ * @param {Number} [radialAccelVar=0] radial acceleration variance of each particle.
2164
+ * @param {boolean} [rotationIsDir=false]
2165
+ */
2166
+ cc.ParticleSystem.ModeA = function (gravity, speed, speedVar, tangentialAccel, tangentialAccelVar, radialAccel, radialAccelVar, rotationIsDir) {
2167
+ /** Gravity value. Only available in 'Gravity' mode. */
2168
+ this.gravity = gravity ? gravity : cc.p(0,0);
2169
+ /** speed of each particle. Only available in 'Gravity' mode. */
2170
+ this.speed = speed || 0;
2171
+ /** speed variance of each particle. Only available in 'Gravity' mode. */
2172
+ this.speedVar = speedVar || 0;
2173
+ /** tangential acceleration of each particle. Only available in 'Gravity' mode. */
2174
+ this.tangentialAccel = tangentialAccel || 0;
2175
+ /** tangential acceleration variance of each particle. Only available in 'Gravity' mode. */
2176
+ this.tangentialAccelVar = tangentialAccelVar || 0;
2177
+ /** radial acceleration of each particle. Only available in 'Gravity' mode. */
2178
+ this.radialAccel = radialAccel || 0;
2179
+ /** radial acceleration variance of each particle. Only available in 'Gravity' mode. */
2180
+ this.radialAccelVar = radialAccelVar || 0;
2181
+ /** set the rotation of each particle to its direction Only available in 'Gravity' mode. */
2182
+ this.rotationIsDir = rotationIsDir || false;
2183
+ };
2184
+
2185
+ /**
2186
+ * Mode B: circular movement (gravity, radial accel and tangential accel don't are not used in this mode)
2187
+ * @Class
2188
+ * @Construct
2189
+ * @param {Number} [startRadius=0] The starting radius of the particles.
2190
+ * @param {Number} [startRadiusVar=0] The starting radius variance of the particles.
2191
+ * @param {Number} [endRadius=0] The ending radius of the particles.
2192
+ * @param {Number} [endRadiusVar=0] The ending radius variance of the particles.
2193
+ * @param {Number} [rotatePerSecond=0] Number of degrees to rotate a particle around the source pos per second.
2194
+ * @param {Number} [rotatePerSecondVar=0] Variance in degrees for rotatePerSecond.
2195
+ */
2196
+ cc.ParticleSystem.ModeB = function (startRadius, startRadiusVar, endRadius, endRadiusVar, rotatePerSecond, rotatePerSecondVar) {
2197
+ /** The starting radius of the particles. Only available in 'Radius' mode. */
2198
+ this.startRadius = startRadius || 0;
2199
+ /** The starting radius variance of the particles. Only available in 'Radius' mode. */
2200
+ this.startRadiusVar = startRadiusVar || 0;
2201
+ /** The ending radius of the particles. Only available in 'Radius' mode. */
2202
+ this.endRadius = endRadius || 0;
2203
+ /** The ending radius variance of the particles. Only available in 'Radius' mode. */
2204
+ this.endRadiusVar = endRadiusVar || 0;
2205
+ /** Number of degress to rotate a particle around the source pos per second. Only available in 'Radius' mode. */
2206
+ this.rotatePerSecond = rotatePerSecond || 0;
2207
+ /** Variance in degrees for rotatePerSecond. Only available in 'Radius' mode. */
2208
+ this.rotatePerSecondVar = rotatePerSecondVar || 0;
2209
+ };
2210
+
2211
+ /**
2212
+ * Shape Mode of Particle Draw
2213
+ * @constant
2214
+ * @type Number
2215
+ */
2216
+ cc.ParticleSystem.SHAPE_MODE = 0;
2217
+
2218
+ /**
2219
+ * Texture Mode of Particle Draw
2220
+ * @constant
2221
+ * @type Number
2222
+ */
2223
+ cc.ParticleSystem.TEXTURE_MODE = 1;
2224
+
2225
+ /**
2226
+ * Star Shape for ShapeMode of Particle
2227
+ * @constant
2228
+ * @type Number
2229
+ */
2230
+ cc.ParticleSystem.STAR_SHAPE = 0;
2231
+
2232
+ /**
2233
+ * Ball Shape for ShapeMode of Particle
2234
+ * @constant
2235
+ * @type Number
2236
+ */
2237
+ cc.ParticleSystem.BALL_SHAPE = 1;
2238
+
2239
+ /**
2240
+ * The Particle emitter lives forever
2241
+ * @constant
2242
+ * @type Number
2243
+ */
2244
+ cc.ParticleSystem.DURATION_INFINITY = -1;
2245
+
2246
+ /**
2247
+ * The starting size of the particle is equal to the ending size
2248
+ * @constant
2249
+ * @type Number
2250
+ */
2251
+ cc.ParticleSystem.START_SIZE_EQUAL_TO_END_SIZE = -1;
2252
+
2253
+ /**
2254
+ * The starting radius of the particle is equal to the ending radius
2255
+ * @constant
2256
+ * @type Number
2257
+ */
2258
+ cc.ParticleSystem.START_RADIUS_EQUAL_TO_END_RADIUS = -1;
2259
+
2260
+ /**
2261
+ * Gravity mode (A mode)
2262
+ * @constant
2263
+ * @type Number
2264
+ */
2265
+ cc.ParticleSystem.MODE_GRAVITY = 0;
2266
+
2267
+ /**
2268
+ * Radius mode (B mode)
2269
+ * @constant
2270
+ * @type Number
2271
+ */
2272
+ cc.ParticleSystem.MODE_RADIUS = 1;
2273
+
2274
+ /**
2275
+ * Living particles are attached to the world and are unaffected by emitter repositioning.
2276
+ * @constant
2277
+ * @type Number
2278
+ */
2279
+ cc.ParticleSystem.TYPE_FREE = 0;
2280
+
2281
+ /**
2282
+ * Living particles are attached to the world but will follow the emitter repositioning.<br/>
2283
+ * Use case: Attach an emitter to an sprite, and you want that the emitter follows the sprite.
2284
+ * @constant
2285
+ * @type Number
2286
+ */
2287
+ cc.ParticleSystem.TYPE_RELATIVE = 1;
2288
+
2289
+ /**
2290
+ * Living particles are attached to the emitter and are translated along with it.
2291
+ * @constant
2292
+ * @type Number
2293
+ */
2294
+ cc.ParticleSystem.TYPE_GROUPED = 2;