ccb 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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,2059 @@
1
+ /****************************************************************************
2
+ Copyright (c) 2011-2012 cocos2d-x.org
3
+ Copyright (c) 2013-2014 Chukong Technologies Inc.
4
+
5
+ http://www.cocos2d-x.org
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in
15
+ all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ THE SOFTWARE.
24
+ ****************************************************************************/
25
+
26
+ ccui._FocusNavigationController = cc.Class.extend({
27
+ _keyboardListener: null,
28
+ _firstFocusedWidget: null,
29
+ _enableFocusNavigation: false,
30
+ _keyboardEventPriority: 1,
31
+
32
+ enableFocusNavigation: function(flag){
33
+ if (this._enableFocusNavigation == flag)
34
+ return;
35
+
36
+ this._enableFocusNavigation = flag;
37
+ if (flag)
38
+ this._addKeyboardEventListener();
39
+ else
40
+ this._removeKeyboardEventListener();
41
+ },
42
+
43
+ _setFirstFocsuedWidget: function(widget){
44
+ this._firstFocusedWidget = widget;
45
+ },
46
+
47
+ _onKeyPressed: function(keyCode, event){
48
+ if (this._enableFocusNavigation && this._firstFocusedWidget) {
49
+ if (keyCode == cc.KEY.dpadDown) {
50
+ this._firstFocusedWidget = this._firstFocusedWidget.findNextFocusedWidget(ccui.Widget.DOWN, this._firstFocusedWidget);
51
+ }
52
+ if (keyCode == cc.KEY.dpadUp){
53
+ this._firstFocusedWidget = this._firstFocusedWidget.findNextFocusedWidget(ccui.Widget.UP, this._firstFocusedWidget);
54
+ }
55
+ if (keyCode == cc.KEY.dpadLeft) {
56
+ this._firstFocusedWidget = this._firstFocusedWidget.findNextFocusedWidget(ccui.Widget.LEFT, this._firstFocusedWidget);
57
+ }
58
+ if (keyCode == cc.KEY.dpadRight) {
59
+ this._firstFocusedWidget = this._firstFocusedWidget.findNextFocusedWidget(ccui.Widget.RIGHT, this._firstFocusedWidget);
60
+ }
61
+ }
62
+ },
63
+
64
+ _addKeyboardEventListener: function(){
65
+ if (!this._keyboardListener) {
66
+ this._keyboardListener = cc.EventListener.create({
67
+ event: cc.EventListener.KEYBOARD,
68
+ onKeyReleased: this._onKeyPressed.bind(this)
69
+ });
70
+ cc.eventManager.addListener(this._keyboardListener, this._keyboardEventPriority);
71
+ }
72
+ },
73
+
74
+ _removeKeyboardEventListener: function(){
75
+ if (this._keyboardListener) {
76
+ cc.eventManager.removeEventListener(this._keyboardListener);
77
+ this._keyboardListener = null;
78
+ }
79
+ }
80
+ });
81
+
82
+ ccui.__LAYOUT_COMPONENT_NAME = "__ui_layout";
83
+
84
+ /**
85
+ * The base class for ccui controls and layout
86
+ * @sample
87
+ * var uiWidget = new ccui.Widget();
88
+ * this.addChild(uiWidget);
89
+ * @class
90
+ * @extends ccui.ProtectedNode
91
+ *
92
+ * @property {Number} xPercent - Position x in percentage of width
93
+ * @property {Number} yPercent - Position y in percentage of height
94
+ * @property {Number} widthPercent - Width in percentage of parent width
95
+ * @property {Number} heightPercent - Height in percentage of parent height
96
+ * @property {ccui.Widget} widgetParent - <@readonly> The direct parent when it's a widget also, otherwise equals null
97
+ * @property {Boolean} enabled - Indicate whether the widget is enabled
98
+ * @property {Boolean} focused - Indicate whether the widget is focused
99
+ * @property {ccui.Widget.SIZE_ABSOLUTE|ccui.Widget.SIZE_PERCENT} sizeType - The size type of the widget
100
+ * @property {ccui.Widget.TYPE_WIDGET|ccui.Widget.TYPE_CONTAINER} widgetType - <@readonly> The type of the widget
101
+ * @property {Boolean} touchEnabled - Indicate whether touch events are enabled
102
+ * @property {Boolean} updateEnabled - Indicate whether the update function is scheduled
103
+ * @property {Boolean} bright - Indicate whether the widget is bright
104
+ * @property {String} name - The name of the widget
105
+ * @property {Number} actionTag - The action tag of the widget
106
+ */
107
+ ccui.Widget = ccui.ProtectedNode.extend(/** @lends ccui.Widget# */{
108
+ _enabled: true, ///< Highest control of widget
109
+ _bright: true, ///< is this widget bright
110
+ _touchEnabled: false, ///< is this widget touch endabled
111
+
112
+ _brightStyle: null, ///< bright style
113
+
114
+ _touchBeganPosition: null, ///< touch began point
115
+ _touchMovePosition: null, ///< touch moved point
116
+ _touchEndPosition: null, ///< touch ended point
117
+
118
+ _touchEventListener: null,
119
+ _touchEventSelector: null,
120
+
121
+ _name: "default",
122
+ _widgetType: null,
123
+ _actionTag: 0,
124
+ _customSize: null,
125
+ _layoutParameterDictionary: null,
126
+ _layoutParameterType:0,
127
+
128
+ _focused: false,
129
+ _focusEnabled: true,
130
+
131
+ _ignoreSize: false,
132
+ _affectByClipping: false,
133
+
134
+ _sizeType: null,
135
+ _sizePercent: null,
136
+ _positionType: null,
137
+ _positionPercent: null,
138
+ _hit: false,
139
+ _nodes: null,
140
+ _touchListener: null,
141
+ _className: "Widget",
142
+ _flippedX: false,
143
+ _flippedY: false,
144
+ _opacity: 255,
145
+ _highlight: false,
146
+
147
+ _touchEventCallback: null,
148
+ _clickEventListener: null,
149
+
150
+ _propagateTouchEvents: true,
151
+ _unifySize: false,
152
+
153
+ _callbackName: null,
154
+ _callbackType: null,
155
+ _usingLayoutComponent: false,
156
+
157
+ /**
158
+ * Constructor function, override it to extend the construction behavior, remember to call "this._super()" in the extended "ctor" function.
159
+ * @function
160
+ */
161
+ ctor: function () {
162
+ cc.ProtectedNode.prototype.ctor.call(this);
163
+ this._brightStyle = ccui.Widget.BRIGHT_STYLE_NONE;
164
+ this._touchBeganPosition = cc.p(0, 0);
165
+ this._touchMovePosition = cc.p(0, 0);
166
+ this._touchEndPosition = cc.p(0, 0);
167
+ this._widgetType = ccui.Widget.TYPE_WIDGET;
168
+ this._customSize = cc.size(0, 0);
169
+ this._layoutParameterDictionary = {};
170
+ this._sizeType = ccui.Widget.SIZE_ABSOLUTE;
171
+ this._sizePercent = cc.p(0, 0);
172
+ this._positionType = ccui.Widget.POSITION_ABSOLUTE;
173
+ this._positionPercent = cc.p(0, 0);
174
+ this._nodes = [];
175
+ this._layoutParameterType = ccui.LayoutParameter.NONE;
176
+ this.init(); //TODO
177
+ },
178
+
179
+ /**
180
+ * initializes state of widget. please do not call this function by yourself, you should pass the parameters to constructor to initialize it
.
181
+ * @returns {boolean}
182
+ */
183
+ init: function () {
184
+ if (cc.ProtectedNode.prototype.init.call(this)) {
185
+ this._layoutParameterDictionary = {};
186
+ this._initRenderer();
187
+ this.setBright(true);
188
+
189
+ this.onFocusChanged = this.onFocusChange.bind(this);
190
+ this.onNextFocusedWidget = null;
191
+ this.setAnchorPoint(cc.p(0.5, 0.5));
192
+
193
+ this.ignoreContentAdaptWithSize(true);
194
+ return true;
195
+ }
196
+ return false;
197
+ },
198
+
199
+ /**
200
+ * Calls updateSizeAndPosition and its parent's onEnter
201
+ * @override
202
+ */
203
+ onEnter: function () {
204
+ var locListener = this._touchListener;
205
+ if (locListener && !locListener._isRegistered() && this._touchEnabled)
206
+ cc.eventManager.addListener(locListener, this);
207
+ if(!this._usingLayoutComponent)
208
+ this.updateSizeAndPosition();
209
+ cc.ProtectedNode.prototype.onEnter.call(this);
210
+ },
211
+
212
+ /**
213
+ * Calls unscheduleUpdate and its parent's onExit
214
+ * @override
215
+ */
216
+ onExit: function(){
217
+ this.unscheduleUpdate();
218
+ cc.ProtectedNode.prototype.onExit.call(this);
219
+ },
220
+
221
+ _getOrCreateLayoutComponent: function(){
222
+ var layoutComponent = this.getComponent(ccui.__LAYOUT_COMPONENT_NAME);
223
+ if (null == layoutComponent){
224
+ layoutComponent = new ccui.LayoutComponent();
225
+ this.addComponent(layoutComponent);
226
+ }
227
+ return layoutComponent;
228
+ },
229
+
230
+ /**
231
+ * The direct parent when it's a widget also, otherwise equals null
232
+ * @returns {ccui.Widget|null}
233
+ */
234
+ getWidgetParent: function () {
235
+ var widget = this.getParent();
236
+ if (widget instanceof ccui.Widget)
237
+ return widget;
238
+ return null;
239
+ },
240
+
241
+ _updateContentSizeWithTextureSize: function(size){
242
+ if(this._unifySize){
243
+ this.setContentSize(size);
244
+ return;
245
+ }
246
+ this.setContentSize(this._ignoreSize ? size : this._customSize);
247
+ },
248
+
249
+ _isAncestorsEnabled: function(){
250
+ var parentWidget = this._getAncensterWidget(this);
251
+ if (parentWidget == null)
252
+ return true;
253
+ if (parentWidget && !parentWidget.isEnabled())
254
+ return false;
255
+
256
+ return parentWidget._isAncestorsEnabled();
257
+ },
258
+
259
+ /**
260
+ * Allow widget touch events to propagate to its parents. Set false will disable propagation
261
+ * @since v3.2
262
+ * @param {Boolean} isPropagate
263
+ */
264
+ setPropagateTouchEvents: function(isPropagate){
265
+ this._propagateTouchEvents = isPropagate;
266
+ },
267
+
268
+ /**
269
+ * Return whether the widget is propagate touch events to its parents or not
270
+ * @since v3.2
271
+ * @returns {boolean}
272
+ */
273
+ isPropagateTouchEvents: function(){
274
+ return this._propagateTouchEvents;
275
+ },
276
+
277
+ /**
278
+ * Specify widget to swallow touches or not
279
+ * @since v3.2
280
+ * @param {Boolean} swallow
281
+ */
282
+ setSwallowTouches: function(swallow){
283
+ if (this._touchListener)
284
+ this._touchListener.setSwallowTouches(swallow);
285
+ },
286
+
287
+ /**
288
+ * Return whether the widget is swallowing touch or not
289
+ * @since v3.2
290
+ * @returns {boolean}
291
+ */
292
+ isSwallowTouches: function(){
293
+ if (this._touchListener){
294
+ //return true; //todo need test
295
+ return this._touchListener.isSwallowTouches();
296
+ }
297
+ return false;
298
+ },
299
+
300
+ _getAncensterWidget: function(node){
301
+ if (null == node)
302
+ return null;
303
+
304
+ var parent = node.getParent();
305
+ if (null == parent)
306
+ return null;
307
+
308
+ if (parent instanceof ccui.Widget)
309
+ return parent;
310
+ else
311
+ return this._getAncensterWidget(parent.getParent());
312
+ },
313
+
314
+ _isAncestorsVisible: function(node){
315
+ if (null == node)
316
+ return true;
317
+
318
+ var parent = node.getParent();
319
+
320
+ if (parent && !parent.isVisible())
321
+ return false;
322
+ return this._isAncestorsVisible(parent);
323
+ },
324
+
325
+ _cleanupWidget: function(){
326
+ //clean up _touchListener
327
+ this._eventDispatcher.removeEventListener(this._touchListener);
328
+ this._touchEnabled = false;
329
+ this._touchListener = null;
330
+
331
+ //cleanup focused widget and focus navigation controller
332
+ if (ccui.Widget._focusedWidget == this){
333
+ ccui.Widget._focusedWidget = null;
334
+ ccui.Widget._focusNavigationController = null;
335
+ }
336
+ },
337
+
338
+ /**
339
+ * <p>
340
+ * Sets whether the widget is enabled <br/>
341
+ * true if the widget is enabled, widget may be touched , false if the widget is disabled, widget cannot be touched. <br/>
342
+ * The default value is true, a widget is default to enabled
343
+ * </p>
344
+ * @param {Boolean} enabled
345
+ */
346
+ setEnabled: function (enabled) {
347
+ this._enabled = enabled;
348
+ },
349
+
350
+ /**
351
+ * initializes renderer of widget.
352
+ */
353
+ _initRenderer: function () {},
354
+
355
+ /**
356
+ * Sets _customSize of ccui.Widget, if ignoreSize is true, the content size is its renderer's contentSize, otherwise the content size is parameter.
357
+ * and updates size percent by parent content size. At last, updates its children's size and position.
358
+ * @param {cc.Size|Number} contentSize content size or width of content size
359
+ * @param {Number} [height]
360
+ * @override
361
+ */
362
+ setContentSize: function(contentSize, height){
363
+ var locWidth = (height === undefined) ? contentSize.width : contentSize;
364
+ var locHeight = (height === undefined) ? contentSize.height : height;
365
+ cc.Node.prototype.setContentSize.call(this, locWidth, locHeight);
366
+
367
+ this._customSize.width = locWidth;
368
+ this._customSize.height = locHeight;
369
+ if(this._unifySize){
370
+ //unify size logic
371
+ } else if (this._ignoreSize){
372
+ this._contentSize = this.getVirtualRendererSize();
373
+ }
374
+ if (!this._usingLayoutComponent && this._running) {
375
+ var widgetParent = this.getWidgetParent();
376
+ var pSize = widgetParent ? widgetParent.getContentSize() : this._parent.getContentSize();
377
+ this._sizePercent.x = (pSize.width > 0.0) ? locWidth / pSize.width : 0.0;
378
+ this._sizePercent.y = (pSize.height > 0.0) ? locHeight / pSize.height : 0.0;
379
+ }
380
+ this._onSizeChanged();
381
+ },
382
+
383
+ _setWidth: function (w) {
384
+ cc.Node.prototype._setWidth.call(this, w);
385
+ this._customSize.width = w;
386
+ if(this._unifySize){
387
+ //unify size logic
388
+ } else if (this._ignoreSize){
389
+ this._contentSize = this.getVirtualRendererSize();
390
+ }
391
+
392
+ if (!this._usingLayoutComponent && this._running) {
393
+ var widgetParent = this.getWidgetParent();
394
+ var locWidth = widgetParent ? widgetParent.width : this._parent.width;
395
+ this._sizePercent.x = locWidth > 0 ? this._customSize.width / locWidth : 0;
396
+ }
397
+ this._onSizeChanged();
398
+ },
399
+ _setHeight: function (h) {
400
+ cc.Node.prototype._setHeight.call(this, h);
401
+ this._customSize.height = h;
402
+ if(this._unifySize){
403
+ //unify size logic
404
+ } else if (this._ignoreSize){
405
+ this._contentSize = this.getVirtualRendererSize();
406
+ }
407
+
408
+ if (!this._usingLayoutComponent && this._running) {
409
+ var widgetParent = this.getWidgetParent();
410
+ var locH = widgetParent ? widgetParent.height : this._parent.height;
411
+ this._sizePercent.y = locH > 0 ? this._customSize.height / locH : 0;
412
+ }
413
+ this._onSizeChanged();
414
+ },
415
+
416
+ /**
417
+ * Changes the percent that is widget's percent size
418
+ * @param {cc.Point} percent that is widget's percent size, width and height value from 0 to 1.
419
+ */
420
+ setSizePercent: function (percent) {
421
+ if(this._usingLayoutComponent){
422
+ var component = this._getOrCreateLayoutComponent();
423
+ component.setUsingPercentContentSize(true);
424
+ component.setPercentContentSize(percent);
425
+ component.refreshLayout();
426
+ return;
427
+ }
428
+
429
+ this._sizePercent.x = percent.x;
430
+ this._sizePercent.y = percent.y;
431
+ var width = this._customSize.width, height = this._customSize.height;
432
+ if (this._running) {
433
+ var widgetParent = this.getWidgetParent();
434
+ if (widgetParent) {
435
+ width = widgetParent.width * percent.x;
436
+ height = widgetParent.height * percent.y;
437
+ } else {
438
+ width = this._parent.width * percent.x;
439
+ height = this._parent.height * percent.y;
440
+ }
441
+ }
442
+ if (this._ignoreSize)
443
+ this.setContentSize(this.getVirtualRendererSize());
444
+ else
445
+ this.setContentSize(width, height);
446
+
447
+ this._customSize.width = width;
448
+ this._customSize.height = height;
449
+ },
450
+
451
+ _setWidthPercent: function (percent) {
452
+ this._sizePercent.x = percent;
453
+ var width = this._customSize.width;
454
+ if (this._running) {
455
+ var widgetParent = this.getWidgetParent();
456
+ width = (widgetParent ? widgetParent.width : this._parent.width) * percent;
457
+ }
458
+ if (this._ignoreSize)
459
+ this._setWidth(this.getVirtualRendererSize().width);
460
+ else
461
+ this._setWidth(width);
462
+ this._customSize.width = width;
463
+ },
464
+ _setHeightPercent: function (percent) {
465
+ this._sizePercent.y = percent;
466
+ var height = this._customSize.height;
467
+ if (this._running) {
468
+ var widgetParent = this.getWidgetParent();
469
+ height = (widgetParent ? widgetParent.height : this._parent.height) * percent;
470
+ }
471
+ if (this._ignoreSize)
472
+ this._setHeight(this.getVirtualRendererSize().height);
473
+ else
474
+ this._setHeight(height);
475
+ this._customSize.height = height;
476
+ },
477
+
478
+ /**
479
+ * updates its size by size type and its position by position type.
480
+ * @param {cc.Size} [parentSize] parent size
481
+ */
482
+ updateSizeAndPosition: function (parentSize) {
483
+ if(!parentSize){
484
+ var widgetParent = this.getWidgetParent();
485
+ if(widgetParent)
486
+ parentSize = widgetParent.getLayoutSize();
487
+ else
488
+ parentSize = this._parent.getContentSize();
489
+ }
490
+
491
+ switch (this._sizeType) {
492
+ case ccui.Widget.SIZE_ABSOLUTE:
493
+ if(this._ignoreSize)
494
+ this.setContentSize(this.getVirtualRendererSize());
495
+ else
496
+ this.setContentSize(this._customSize);
497
+ this._sizePercent.x = (parentSize.width > 0) ? this._customSize.width / parentSize.width : 0;
498
+ this._sizePercent.y = (parentSize.height > 0) ? this._customSize.height / parentSize.height : 0;
499
+ break;
500
+ case ccui.Widget.SIZE_PERCENT:
501
+ var cSize = cc.size(parentSize.width * this._sizePercent.x , parentSize.height * this._sizePercent.y);
502
+ if(this._ignoreSize)
503
+ this.setContentSize(this.getVirtualRendererSize());
504
+ else
505
+ this.setContentSize(cSize);
506
+ this._customSize.width = cSize.width;
507
+ this._customSize.height = cSize.height;
508
+ break;
509
+ default:
510
+ break;
511
+ }
512
+ this._onSizeChanged();
513
+ var absPos = this.getPosition();
514
+ switch (this._positionType) {
515
+ case ccui.Widget.POSITION_ABSOLUTE:
516
+ if (parentSize.width <= 0 || parentSize.height <= 0) {
517
+ this._positionPercent.x = this._positionPercent.y = 0;
518
+ } else {
519
+ this._positionPercent.x = absPos.x / parentSize.width;
520
+ this._positionPercent.y = absPos.y / parentSize.height;
521
+ }
522
+ break;
523
+ case ccui.Widget.POSITION_PERCENT:
524
+ absPos = cc.p(parentSize.width * this._positionPercent.x, parentSize.height * this._positionPercent.y);
525
+ break;
526
+ default:
527
+ break;
528
+ }
529
+ if(this._parent instanceof ccui.ImageView){
530
+ var renderer = this._parent._imageRenderer;
531
+ if(renderer && !renderer._textureLoaded)
532
+ return;
533
+ }
534
+ this.setPosition(absPos);
535
+ },
536
+
537
+ /**TEXTURE_RES_TYPE
538
+ * Changes the size type of widget.
539
+ * @param {ccui.Widget.SIZE_ABSOLUTE|ccui.Widget.SIZE_PERCENT} type that is widget's size type
540
+ */
541
+ setSizeType: function (type) {
542
+ this._sizeType = type;
543
+ if (this._usingLayoutComponent) {
544
+ var component = this._getOrCreateLayoutComponent();
545
+ component.setUsingPercentContentSize(this._sizeType == ccui.SIZE_PERCENT);
546
+ }
547
+ },
548
+
549
+ /**
550
+ * Gets the size type of widget.
551
+ * @returns {ccui.Widget.SIZE_ABSOLUTE|ccui.Widget.SIZE_PERCENT} that is widget's size type
552
+ */
553
+ getSizeType: function () {
554
+ return this._sizeType;
555
+ },
556
+
557
+ /**
558
+ * Ignore the widget size
559
+ * @param {Boolean} ignore true that widget will ignore it's size, use texture size, false otherwise. Default value is true.
560
+ */
561
+ ignoreContentAdaptWithSize: function (ignore) {
562
+ if(this._unifySize){
563
+ this.setContentSize(this._customSize);
564
+ return;
565
+ }
566
+
567
+ if(this._ignoreSize == ignore)
568
+ return;
569
+
570
+ this._ignoreSize = ignore;
571
+ this.setContentSize( ignore ? this.getVirtualRendererSize() : this._customSize );
572
+ //this._onSizeChanged();
573
+ },
574
+
575
+ /**
576
+ * Gets whether ignore the content size (custom size)
577
+ * @returns {boolean} true that widget will ignore it's size, use texture size, false otherwise.
578
+ */
579
+ isIgnoreContentAdaptWithSize: function () {
580
+ return this._ignoreSize;
581
+ },
582
+
583
+ /**
584
+ * Get custom size of ccui.Widget
585
+ * @returns {cc.Size}
586
+ */
587
+ getCustomSize: function () {
588
+ return cc.size(this._customSize);
589
+ },
590
+
591
+ /**
592
+ * Gets layout size of ccui.Widget.
593
+ * @returns {cc.Size}
594
+ */
595
+ getLayoutSize: function(){
596
+ return cc.size(this._contentSize);
597
+ },
598
+
599
+ /**
600
+ * Returns size percent of ccui.Widget
601
+ * @returns {cc.Point}
602
+ */
603
+ getSizePercent: function () {
604
+ if(this._usingLayoutComponent){
605
+ var component = this._getOrCreateLayoutComponent();
606
+ this._sizePercent = component.getPercentContentSize();
607
+ }
608
+ return this._sizePercent;
609
+ },
610
+ _getWidthPercent: function () {
611
+ return this._sizePercent.x;
612
+ },
613
+ _getHeightPercent: function () {
614
+ return this._sizePercent.y;
615
+ },
616
+
617
+ /**
618
+ * Gets world position of ccui.Widget.
619
+ * @returns {cc.Point} world position of ccui.Widget.
620
+ */
621
+ getWorldPosition: function () {
622
+ return this.convertToWorldSpace(cc.p(this._anchorPoint.x * this._contentSize.width, this._anchorPoint.y * this._contentSize.height));
623
+ },
624
+
625
+ /**
626
+ * Gets the Virtual Renderer of widget.
627
+ * @returns {ccui.Widget}
628
+ */
629
+ getVirtualRenderer: function () {
630
+ return this;
631
+ },
632
+
633
+ /**
634
+ * Gets the content size of widget. Content size is widget's texture size.
635
+ */
636
+ getVirtualRendererSize:function(){
637
+ return cc.size(this._contentSize);
638
+ },
639
+
640
+ /**
641
+ * call back function called when size changed.
642
+ */
643
+ _onSizeChanged: function () {
644
+ if(!this._usingLayoutComponent){
645
+ var locChildren = this.getChildren();
646
+ for (var i = 0, len = locChildren.length; i < len; i++) {
647
+ var child = locChildren[i];
648
+ if(child instanceof ccui.Widget)
649
+ child.updateSizeAndPosition();
650
+ }
651
+ }
652
+ },
653
+
654
+ /**
655
+ * Sets whether the widget is touch enabled. The default value is false, a widget is default to touch disabled
656
+ * @param {Boolean} enable true if the widget is touch enabled, false if the widget is touch disabled.
657
+ */
658
+ setTouchEnabled: function (enable) {
659
+ if (this._touchEnabled === enable)
660
+ return;
661
+
662
+ this._touchEnabled = enable; //TODO need consider remove and re-add.
663
+ if (this._touchEnabled) {
664
+ if(!this._touchListener)
665
+ this._touchListener = cc.EventListener.create({
666
+ event: cc.EventListener.TOUCH_ONE_BY_ONE,
667
+ swallowTouches: true,
668
+ onTouchBegan: this.onTouchBegan.bind(this),
669
+ onTouchMoved: this.onTouchMoved.bind(this),
670
+ onTouchEnded: this.onTouchEnded.bind(this)
671
+ });
672
+ cc.eventManager.addListener(this._touchListener, this);
673
+ } else {
674
+ cc.eventManager.removeListener(this._touchListener);
675
+ }
676
+ },
677
+
678
+ /**
679
+ * Returns whether or not touch is enabled.
680
+ * @returns {boolean} true if the widget is touch enabled, false if the widget is touch disabled.
681
+ */
682
+ isTouchEnabled: function () {
683
+ return this._touchEnabled;
684
+ },
685
+
686
+ /**
687
+ * Determines if the widget is highlighted
688
+ * @returns {boolean} true if the widget is highlighted, false if the widget is not highlighted .
689
+ */
690
+ isHighlighted: function(){
691
+ return this._highlight;
692
+ },
693
+
694
+ /**
695
+ * Sets whether the widget is highlighted. The default value is false, a widget is default to not highlighted
696
+ * @param highlight true if the widget is highlighted, false if the widget is not highlighted.
697
+ */
698
+ setHighlighted:function(highlight){
699
+ if (highlight == this._highlight)
700
+ return;
701
+ this._highlight = highlight;
702
+ if (this._bright) {
703
+ if (this._highlight)
704
+ this.setBrightStyle(ccui.Widget.BRIGHT_STYLE_HIGH_LIGHT);
705
+ else
706
+ this.setBrightStyle(ccui.Widget.BRIGHT_STYLE_NORMAL);
707
+ } else
708
+ this._onPressStateChangedToDisabled();
709
+ },
710
+
711
+ /**
712
+ * Determines if the widget is on focused
713
+ * @returns {boolean} whether the widget is focused or not
714
+ */
715
+ isFocused: function () {
716
+ return this._focused;
717
+ },
718
+
719
+ /**
720
+ * Sets whether the widget is on focused
721
+ * The default value is false, a widget is default to not on focused
722
+ * @param {boolean} focus pass true to let the widget get focus or pass false to let the widget lose focus
723
+ */
724
+ setFocused: function (focus) {
725
+ this._focused = focus;
726
+ //make sure there is only one focusedWidget
727
+ if (focus){
728
+ ccui.Widget._focusedWidget = this;
729
+ if(ccui.Widget._focusNavigationController)
730
+ ccui.Widget._focusNavigationController._setFirstFocsuedWidget(this);
731
+ }
732
+ },
733
+
734
+ /**
735
+ * returns whether the widget could accept focus.
736
+ * @returns {boolean} true represent the widget could accept focus, false represent the widget couldn't accept focus
737
+ */
738
+ isFocusEnabled: function(){
739
+ return this._focusEnabled;
740
+ },
741
+
742
+ /**
743
+ * sets whether the widget could accept focus.
744
+ * @param {Boolean} enable true represent the widget could accept focus, false represent the widget couldn't accept focus
745
+ */
746
+ setFocusEnabled: function(enable){
747
+ this._focusEnabled = enable;
748
+ },
749
+
750
+ /**
751
+ * <p>
752
+ * When a widget is in a layout, you could call this method to get the next focused widget within a specified direction. <br/>
753
+ * If the widget is not in a layout, it will return itself
754
+ * </p>
755
+ * @param direction the direction to look for the next focused widget in a layout
756
+ * @param current the current focused widget
757
+ * @return the next focused widget in a layout
758
+ */
759
+ findNextFocusedWidget: function( direction, current){
760
+ if (null == this.onNextFocusedWidget || null == this.onNextFocusedWidget(direction) ) {
761
+ var isLayout = current instanceof ccui.Layout;
762
+ if (this.isFocused() || isLayout) {
763
+ var layout = this.getParent();
764
+ if (null == layout || !(layout instanceof ccui.Layout)){
765
+ //the outer layout's default behaviour is : loop focus
766
+ if (isLayout)
767
+ return current.findNextFocusedWidget(direction, current);
768
+ return current;
769
+ } else
770
+ return layout.findNextFocusedWidget(direction, current);
771
+ } else
772
+ return current;
773
+ } else {
774
+ var getFocusWidget = this.onNextFocusedWidget(direction);
775
+ this.dispatchFocusEvent(this, getFocusWidget);
776
+ return getFocusWidget;
777
+ }
778
+ },
779
+
780
+ /**
781
+ * when a widget calls this method, it will get focus immediately.
782
+ */
783
+ requestFocus: function(){
784
+ if (this == ccui.Widget._focusedWidget)
785
+ return;
786
+ this.dispatchFocusEvent(ccui.Widget._focusedWidget, this);
787
+ },
788
+
789
+ /**
790
+ * no matter what widget object you call this method on , it will return you the exact one focused widget
791
+ */
792
+ getCurrentFocusedWidget: function(){
793
+ return ccui.Widget._focusedWidget;
794
+ },
795
+
796
+ /**
797
+ * <p>
798
+ * When a widget lose/get focus, this method will be called. Be Caution when you provide your own version, <br/>
799
+ * you must call widget.setFocused(true/false) to change the focus state of the current focused widget;
800
+ * </p>
801
+ */
802
+ onFocusChanged: null,
803
+
804
+ /**
805
+ * use this function to manually specify the next focused widget regards to each direction
806
+ */
807
+ onNextFocusedWidget: null,
808
+
809
+ /**
810
+ * Sends the touch event to widget's parent, its subclass will override it, e.g. ccui.ScrollView, ccui.PageView
811
+ * @param {Number} eventType
812
+ * @param {ccui.Widget} sender
813
+ * @param {cc.Touch} touch
814
+ */
815
+ interceptTouchEvent: function(eventType, sender, touch){
816
+ var widgetParent = this.getWidgetParent();
817
+ if (widgetParent)
818
+ widgetParent.interceptTouchEvent(eventType,sender,touch);
819
+ },
820
+
821
+ /**
822
+ * This method is called when a focus change event happens
823
+ * @param {ccui.Widget} widgetLostFocus
824
+ * @param {ccui.Widget} widgetGetFocus
825
+ */
826
+ onFocusChange: function(widgetLostFocus, widgetGetFocus){
827
+ //only change focus when there is indeed a get&lose happens
828
+ if (widgetLostFocus)
829
+ widgetLostFocus.setFocused(false);
830
+ if (widgetGetFocus)
831
+ widgetGetFocus.setFocused(true);
832
+ },
833
+
834
+ /**
835
+ * Dispatch a EventFocus through a EventDispatcher
836
+ * @param {ccui.Widget} widgetLostFocus
837
+ * @param {ccui.Widget} widgetGetFocus
838
+ */
839
+ dispatchFocusEvent: function(widgetLostFocus, widgetGetFocus){
840
+ //if the widgetLoseFocus doesn't get focus, it will use the previous focused widget instead
841
+ if (widgetLostFocus && !widgetLostFocus.isFocused())
842
+ widgetLostFocus = ccui.Widget._focusedWidget;
843
+
844
+ if (widgetGetFocus != widgetLostFocus){
845
+ if (widgetGetFocus && widgetGetFocus.onFocusChanged)
846
+ widgetGetFocus.onFocusChanged(widgetLostFocus, widgetGetFocus);
847
+ if (widgetLostFocus && widgetGetFocus.onFocusChanged)
848
+ widgetLostFocus.onFocusChanged(widgetLostFocus, widgetGetFocus);
849
+ cc.eventManager.dispatchEvent(new cc.EventFocus(widgetLostFocus, widgetGetFocus));
850
+ }
851
+ },
852
+
853
+ /**
854
+ * Sets whether the widget is bright. The default value is true, a widget is default to bright
855
+ * @param {Boolean} bright true if the widget is bright, false if the widget is dark.
856
+ */
857
+ setBright: function (bright) {
858
+ this._bright = bright;
859
+ if (this._bright) {
860
+ this._brightStyle = ccui.Widget.BRIGHT_STYLE_NONE;
861
+ this.setBrightStyle(ccui.Widget.BRIGHT_STYLE_NORMAL);
862
+ } else
863
+ this._onPressStateChangedToDisabled();
864
+ },
865
+
866
+ /**
867
+ * To set the bright style of ccui.Widget.
868
+ * @param {Number} style BRIGHT_NORMAL the widget is normal state, BRIGHT_HIGHLIGHT the widget is height light state.
869
+ */
870
+ setBrightStyle: function (style) {
871
+ if (this._brightStyle == style) {
872
+ return;
873
+ }
874
+ style = style || ccui.Widget.BRIGHT_STYLE_NORMAL;
875
+ this._brightStyle = style;
876
+ switch (this._brightStyle) {
877
+ case ccui.Widget.BRIGHT_STYLE_NORMAL:
878
+ this._onPressStateChangedToNormal();
879
+ break;
880
+ case ccui.Widget.BRIGHT_STYLE_HIGH_LIGHT:
881
+ this._onPressStateChangedToPressed();
882
+ break;
883
+ default:
884
+ break;
885
+ }
886
+ },
887
+
888
+ _onPressStateChangedToNormal: function () {},
889
+
890
+ _onPressStateChangedToPressed: function () {},
891
+
892
+ _onPressStateChangedToDisabled: function () {},
893
+
894
+ _updateChildrenDisplayedRGBA: function(){
895
+ this.setColor(this.getColor());
896
+ this.setOpacity(this.getOpacity());
897
+ },
898
+
899
+ /**
900
+ * A call back function when widget lost of focus.
901
+ */
902
+ didNotSelectSelf: function () {},
903
+
904
+ /**
905
+ * <p>
906
+ * The callback of touch began event. <br/>
907
+ * If the bounding box of ccui.Widget contains the touch point, it will do the following things: <br/>
908
+ * 1. sets highlight state, <br/>
909
+ * 2. sends event to parent widget by interceptTouchEvent <br/>
910
+ * 3. calls the callback of touch began event. <br/>
911
+ * 4. returns true, <br/>
912
+ * otherwise returns false directly. <br/>
913
+ * </p>
914
+ * @override
915
+ * @param {cc.Touch} touch
916
+ * @param {cc.Event} event
917
+ * @returns {boolean}
918
+ */
919
+ onTouchBegan: function (touch, event) {
920
+ this._hit = false;
921
+ if (this.isVisible() && this.isEnabled() && this._isAncestorsEnabled() && this._isAncestorsVisible(this) ){
922
+ var touchPoint = touch.getLocation();
923
+ this._touchBeganPosition.x = touchPoint.x;
924
+ this._touchBeganPosition.y = touchPoint.y;
925
+ if(this.hitTest(this._touchBeganPosition) && this.isClippingParentContainsPoint(this._touchBeganPosition))
926
+ this._hit = true;
927
+ }
928
+ if (!this._hit) {
929
+ return false;
930
+ }
931
+ this.setHighlighted(true);
932
+
933
+ /*
934
+ * Propagate touch events to its parents
935
+ */
936
+ if (this._propagateTouchEvents) {
937
+ this.propagateTouchEvent(ccui.Widget.TOUCH_BEGAN, this, touch);
938
+ }
939
+
940
+ this._pushDownEvent();
941
+ return true;
942
+ },
943
+
944
+ propagateTouchEvent: function(event, sender, touch){
945
+ var widgetParent = this.getWidgetParent();
946
+ if (widgetParent){
947
+ widgetParent.interceptTouchEvent(event, sender, touch);
948
+ }
949
+ },
950
+
951
+ /**
952
+ * <p>
953
+ * The callback of touch moved event. <br/>
954
+ * It sets the highlight state by touch, sends event to parent widget by interceptTouchEvent and calls the callback of touch moved event.
955
+ * </p>
956
+ * @param {cc.Touch} touch
957
+ * @param {cc.Event} event
958
+ */
959
+ onTouchMoved: function (touch, event) {
960
+ var touchPoint = touch.getLocation();
961
+ this._touchMovePosition.x = touchPoint.x;
962
+ this._touchMovePosition.y = touchPoint.y;
963
+ this.setHighlighted(this.hitTest(touchPoint));
964
+ /*
965
+ * Propagate touch events to its parents
966
+ */
967
+ if (this._propagateTouchEvents)
968
+ this.propagateTouchEvent(ccui.Widget.TOUCH_MOVED, this, touch);
969
+ this._moveEvent();
970
+ },
971
+
972
+ /**
973
+ * <p>
974
+ * The callback of touch end event
975
+ * It sends event to parent widget by interceptTouchEvent,
976
+ * calls the callback of touch end event (highlight= true) or touch canceled event (highlight= false).
977
+ * sets the highlight state to false ,
978
+ * </p>
979
+ * @param touch
980
+ * @param event
981
+ */
982
+ onTouchEnded: function (touch, event) {
983
+ var touchPoint = touch.getLocation();
984
+ this._touchEndPosition.x = touchPoint.x;
985
+ this._touchEndPosition.y = touchPoint.y;
986
+ /*
987
+ * Propagate touch events to its parents
988
+ */
989
+ if (this._propagateTouchEvents)
990
+ this.propagateTouchEvent(ccui.Widget.TOUCH_ENDED, this, touch);
991
+
992
+ var highlight = this._highlight;
993
+ this.setHighlighted(false);
994
+ if (highlight)
995
+ this._releaseUpEvent();
996
+ else
997
+ this._cancelUpEvent();
998
+ },
999
+
1000
+ /**
1001
+ * A call back function called when widget is selected, and on touch canceled.
1002
+ * @param {cc.Point} touchPoint
1003
+ */
1004
+ onTouchCancelled: function (touchPoint) {
1005
+ this.setHighlighted(false);
1006
+ this._cancelUpEvent();
1007
+ },
1008
+
1009
+ /**
1010
+ * A call back function called when widget is selected, and on touch long clicked.
1011
+ * @param {cc.Point} touchPoint
1012
+ */
1013
+ onTouchLongClicked: function (touchPoint) {
1014
+ this.longClickEvent();
1015
+ },
1016
+
1017
+ //call back function called widget's state changed to dark.
1018
+ _pushDownEvent: function () {
1019
+ if (this._touchEventCallback)
1020
+ this._touchEventCallback(this, ccui.Widget.TOUCH_BEGAN);
1021
+ if (this._touchEventListener && this._touchEventSelector)
1022
+ this._touchEventSelector.call(this._touchEventListener, this, ccui.Widget.TOUCH_BEGAN);
1023
+ },
1024
+
1025
+ _moveEvent: function () {
1026
+ if (this._touchEventCallback)
1027
+ this._touchEventCallback(this, ccui.Widget.TOUCH_MOVED);
1028
+ if (this._touchEventListener && this._touchEventSelector)
1029
+ this._touchEventSelector.call(this._touchEventListener, this, ccui.Widget.TOUCH_MOVED);
1030
+ },
1031
+
1032
+ _releaseUpEvent: function () {
1033
+ if (this._touchEventCallback)
1034
+ this._touchEventCallback(this, ccui.Widget.TOUCH_ENDED);
1035
+ if (this._touchEventListener && this._touchEventSelector)
1036
+ this._touchEventSelector.call(this._touchEventListener, this, ccui.Widget.TOUCH_ENDED);
1037
+ if (this._clickEventListener)
1038
+ this._clickEventListener(this);
1039
+ },
1040
+
1041
+ _cancelUpEvent: function () {
1042
+ if (this._touchEventCallback)
1043
+ this._touchEventCallback(this, ccui.Widget.TOUCH_CANCELED);
1044
+ if (this._touchEventListener && this._touchEventSelector)
1045
+ this._touchEventSelector.call(this._touchEventListener, this, ccui.Widget.TOUCH_CANCELED);
1046
+ },
1047
+
1048
+ longClickEvent: function () {
1049
+ //TODO it will implement in v3.1
1050
+ },
1051
+
1052
+ /**
1053
+ * Sets the touch event target/selector of the ccui.Widget
1054
+ * @param {Function} selector
1055
+ * @param {Object} target
1056
+ */
1057
+ addTouchEventListener: function (selector, target) {
1058
+ if(target === undefined)
1059
+ this._touchEventCallback = selector;
1060
+ else {
1061
+ this._touchEventSelector = selector;
1062
+ this._touchEventListener = target;
1063
+ }
1064
+ },
1065
+
1066
+ addClickEventListener: function(callback){
1067
+ this._clickEventListener = callback;
1068
+ },
1069
+
1070
+ /**
1071
+ * Checks a point if is in widget's space
1072
+ * @param {cc.Point} pt
1073
+ * @returns {boolean} true if the point is in widget's space, false otherwise.
1074
+ */
1075
+ hitTest: function (pt) {
1076
+ var bb = cc.rect(0,0, this._contentSize.width, this._contentSize.height);
1077
+ return cc.rectContainsPoint(bb, this.convertToNodeSpace(pt));
1078
+ },
1079
+
1080
+ /**
1081
+ * returns whether clipping parent widget contains point.
1082
+ * @param {cc.Point} pt location point
1083
+ * @returns {Boolean}
1084
+ */
1085
+ isClippingParentContainsPoint: function(pt){
1086
+ this._affectByClipping = false;
1087
+ var parent = this.getParent();
1088
+ var clippingParent = null;
1089
+ while (parent) {
1090
+ if (parent instanceof ccui.Layout) {
1091
+ if (parent.isClippingEnabled()) {
1092
+ this._affectByClipping = true;
1093
+ clippingParent = parent;
1094
+ break;
1095
+ }
1096
+ }
1097
+ parent = parent.getParent();
1098
+ }
1099
+
1100
+ if (!this._affectByClipping)
1101
+ return true;
1102
+
1103
+ if (clippingParent) {
1104
+ if (clippingParent.hitTest(pt))
1105
+ return clippingParent.isClippingParentContainsPoint(pt);
1106
+ return false;
1107
+ }
1108
+ return true;
1109
+ },
1110
+
1111
+ /**
1112
+ * Calls the checkChildInfo of widget's parent, its subclass will override it.
1113
+ * @param {number} handleState
1114
+ * @param {ccui.Widget} sender
1115
+ * @param {cc.Point} touchPoint
1116
+ */
1117
+ checkChildInfo: function (handleState, sender, touchPoint) {
1118
+ var widgetParent = this.getWidgetParent();
1119
+ if (widgetParent)
1120
+ widgetParent.checkChildInfo(handleState, sender, touchPoint);
1121
+ },
1122
+
1123
+ /**
1124
+ * Changes the position (x,y) of the widget .
1125
+ * The original point (0,0) is at the left-bottom corner of screen.
1126
+ * @override
1127
+ * @param {cc.Point|Number} pos
1128
+ * @param {Number} [posY]
1129
+ */
1130
+ setPosition: function (pos, posY) {
1131
+ if (!this._usingLayoutComponent && this._running) {
1132
+ var widgetParent = this.getWidgetParent();
1133
+ if (widgetParent) {
1134
+ var pSize = widgetParent.getContentSize();
1135
+ if (pSize.width <= 0 || pSize.height <= 0) {
1136
+ this._positionPercent.x = 0;
1137
+ this._positionPercent.y = 0;
1138
+ } else {
1139
+ if (posY == undefined) {
1140
+ this._positionPercent.x = pos.x / pSize.width;
1141
+ this._positionPercent.y = pos.y / pSize.height;
1142
+ } else {
1143
+ this._positionPercent.x = pos / pSize.width;
1144
+ this._positionPercent.y = posY / pSize.height;
1145
+ }
1146
+ }
1147
+ }
1148
+ }
1149
+
1150
+ cc.Node.prototype.setPosition.call(this, pos, posY);
1151
+ //this._positionType = ccui.Widget.POSITION_ABSOLUTE;
1152
+ },
1153
+
1154
+ setPositionX: function (x) {
1155
+ if (this._running) {
1156
+ var widgetParent = this.getWidgetParent();
1157
+ if (widgetParent) {
1158
+ var pw = widgetParent.width;
1159
+ if (pw <= 0)
1160
+ this._positionPercent.x = 0;
1161
+ else
1162
+ this._positionPercent.x = x / pw;
1163
+ }
1164
+ }
1165
+
1166
+ cc.Node.prototype.setPositionX.call(this, x);
1167
+ },
1168
+ setPositionY: function (y) {
1169
+ if (this._running) {
1170
+ var widgetParent = this.getWidgetParent();
1171
+ if (widgetParent) {
1172
+ var ph = widgetParent.height;
1173
+ if (ph <= 0)
1174
+ this._positionPercent.y = 0;
1175
+ else
1176
+ this._positionPercent.y = y / ph;
1177
+ }
1178
+ }
1179
+
1180
+ cc.Node.prototype.setPositionY.call(this, y);
1181
+ },
1182
+
1183
+ /**
1184
+ * Changes the position (x,y) of the widget
1185
+ * @param {cc.Point} percent
1186
+ */
1187
+ setPositionPercent: function (percent) {
1188
+ if (this._usingLayoutComponent){
1189
+ var component = this._getOrCreateLayoutComponent();
1190
+ component.setPositionPercentX(percent.x);
1191
+ component.setPositionPercentY(percent.y);
1192
+ component.refreshLayout();
1193
+ return;
1194
+ }else{
1195
+ this._setXPercent(percent.x);
1196
+ this._setYPercent(percent.y);
1197
+ }
1198
+ this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
1199
+ },
1200
+ _setXPercent: function (percent) {
1201
+ if (this._usingLayoutComponent){
1202
+ var component = this._getOrCreateLayoutComponent();
1203
+ component.setPositionPercentX(percent.x);
1204
+ component.refreshLayout();
1205
+ return;
1206
+ }
1207
+ this._positionPercent.x = percent;
1208
+ },
1209
+ _setYPercent: function (percent) {
1210
+ if (this._usingLayoutComponent){
1211
+ var component = this._getOrCreateLayoutComponent();
1212
+ component.setPositionPercentY(percent.x);
1213
+ component.refreshLayout();
1214
+ return;
1215
+ }
1216
+ this._positionPercent.y = percent;
1217
+ },
1218
+
1219
+ /**
1220
+ * Gets the percent (x,y) of the widget
1221
+ * @returns {cc.Point} The percent (x,y) of the widget in OpenGL coordinates
1222
+ */
1223
+ getPositionPercent: function () {
1224
+ if (this._usingLayoutComponent) {
1225
+ var component = this._getOrCreateLayoutComponent();
1226
+ this._positionPercent.x = component.getPositionPercentX();
1227
+ this._positionPercent.y = component.getPositionPercentY();
1228
+ }
1229
+ return cc.p(this._positionPercent);
1230
+ },
1231
+
1232
+ _getXPercent: function () {
1233
+ if (this._usingLayoutComponent) {
1234
+ var component = this._getOrCreateLayoutComponent();
1235
+ this._positionPercent.x = component.getPositionPercentX();
1236
+ this._positionPercent.y = component.getPositionPercentY();
1237
+ }
1238
+ return this._positionPercent.x;
1239
+ },
1240
+ _getYPercent: function () {
1241
+ if (this._usingLayoutComponent) {
1242
+ var component = this._getOrCreateLayoutComponent();
1243
+ this._positionPercent.x = component.getPositionPercentX();
1244
+ this._positionPercent.y = component.getPositionPercentY();
1245
+ }
1246
+ return this._positionPercent.y;
1247
+ },
1248
+
1249
+ /**
1250
+ * Changes the position type of the widget
1251
+ * @param {Number} type the position type of widget
1252
+ */
1253
+ setPositionType: function (type) {
1254
+ this._positionType = type;
1255
+ if(this._usingLayoutComponent){
1256
+ var component = this._getOrCreateLayoutComponent();
1257
+ if (type == ccui.POSITION_ABSOLUTE){
1258
+ component.setPositionPercentXEnabled(false);
1259
+ component.setPositionPercentYEnabled(false);
1260
+ } else {
1261
+ component.setPositionPercentXEnabled(true);
1262
+ component.setPositionPercentYEnabled(true);
1263
+ }
1264
+ }
1265
+ this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
1266
+ },
1267
+
1268
+ /**
1269
+ * Gets the position type of the widget
1270
+ * @returns {Number} the position type of widget
1271
+ */
1272
+ getPositionType: function () {
1273
+ return this._positionType;
1274
+ },
1275
+
1276
+ /**
1277
+ * Sets whether the widget should be flipped horizontally or not.
1278
+ * @param {Boolean} flipX true if the widget should be flipped horizontally, false otherwise.
1279
+ */
1280
+ setFlippedX: function (flipX) {
1281
+ var realScale = this.getScaleX();
1282
+ this._flippedX = flipX;
1283
+ this.setScaleX(realScale);
1284
+ },
1285
+
1286
+ /**
1287
+ * <p>
1288
+ * Returns the flag which indicates whether the widget is flipped horizontally or not. <br/>
1289
+ * It only flips the texture of the widget, and not the texture of the widget's children. <br/>
1290
+ * Also, flipping the texture doesn't alter the anchorPoint. <br/>
1291
+ * If you want to flip the anchorPoint too, and/or to flip the children too use: <br/>
1292
+ * widget.setScaleX(sprite.getScaleX() * -1);
1293
+ * </p>
1294
+ * @returns {Boolean} true if the widget is flipped horizontally, false otherwise.
1295
+ */
1296
+ isFlippedX: function () {
1297
+ return this._flippedX;
1298
+ },
1299
+
1300
+ /**
1301
+ * Sets whether the widget should be flipped vertically or not.
1302
+ * @param {Boolean} flipY true if the widget should be flipped vertically, false otherwise.
1303
+ */
1304
+ setFlippedY: function (flipY) {
1305
+ var realScale = this.getScaleY();
1306
+ this._flippedY = flipY;
1307
+ this.setScaleY(realScale);
1308
+ },
1309
+
1310
+ /**
1311
+ * <p>
1312
+ * Return the flag which indicates whether the widget is flipped vertically or not. <br/>
1313
+ * It only flips the texture of the widget, and not the texture of the widget's children. <br/>
1314
+ * Also, flipping the texture doesn't alter the anchorPoint. <br/>
1315
+ * If you want to flip the anchorPoint too, and/or to flip the children too use: <br/>
1316
+ * widget.setScaleY(widget.getScaleY() * -1);
1317
+ * </p>
1318
+ * @returns {Boolean} true if the widget is flipped vertically, false otherwise.
1319
+ */
1320
+ isFlippedY: function () {
1321
+ return this._flippedY;
1322
+ },
1323
+
1324
+ _adaptRenderers: function(){},
1325
+
1326
+ /**
1327
+ * Determines if the widget is bright
1328
+ * @returns {boolean} true if the widget is bright, false if the widget is dark.
1329
+ */
1330
+ isBright: function () {
1331
+ return this._bright;
1332
+ },
1333
+
1334
+ /**
1335
+ * Determines if the widget is enabled
1336
+ * @returns {boolean}
1337
+ */
1338
+ isEnabled: function () {
1339
+ return this._enabled;
1340
+ },
1341
+
1342
+ /**
1343
+ * Gets the left boundary position of this widget.
1344
+ * @returns {number}
1345
+ */
1346
+ getLeftBoundary: function () {
1347
+ return this.getPositionX() - this._getAnchorX() * this._contentSize.width;
1348
+ },
1349
+
1350
+ /**
1351
+ * Gets the bottom boundary position of this widget.
1352
+ * @returns {number}
1353
+ */
1354
+ getBottomBoundary: function () {
1355
+ return this.getPositionY() - this._getAnchorY() * this._contentSize.height;
1356
+ },
1357
+
1358
+ /**
1359
+ * Gets the right boundary position of this widget.
1360
+ * @returns {number}
1361
+ */
1362
+ getRightBoundary: function () {
1363
+ return this.getLeftBoundary() + this._contentSize.width;
1364
+ },
1365
+
1366
+ /**
1367
+ * Gets the top boundary position of this widget.
1368
+ * @returns {number}
1369
+ */
1370
+ getTopBoundary: function () {
1371
+ return this.getBottomBoundary() + this._contentSize.height;
1372
+ },
1373
+
1374
+ /**
1375
+ * Gets the position of touch began event.
1376
+ * @returns {cc.Point}
1377
+ */
1378
+ getTouchBeganPosition: function(){
1379
+ return cc.p(this._touchBeganPosition);
1380
+ },
1381
+
1382
+ /**
1383
+ * Gets the position of touch moved event
1384
+ * @returns {cc.Point}
1385
+ */
1386
+ getTouchMovePosition: function(){
1387
+ return cc.p(this._touchMovePosition);
1388
+ },
1389
+
1390
+ /**
1391
+ * Gets the position of touch end event
1392
+ * @returns {cc.Point}
1393
+ */
1394
+ getTouchEndPosition:function(){
1395
+ return cc.p(this._touchEndPosition);
1396
+ },
1397
+
1398
+ /**
1399
+ * get widget type
1400
+ * @returns {ccui.Widget.TYPE_WIDGET|ccui.Widget.TYPE_CONTAINER}
1401
+ */
1402
+ getWidgetType: function () {
1403
+ return this._widgetType;
1404
+ },
1405
+
1406
+ /**
1407
+ * Gets LayoutParameter of widget.
1408
+ * @param {ccui.LayoutParameter} parameter
1409
+ */
1410
+ setLayoutParameter: function (parameter) {
1411
+ if(!parameter)
1412
+ return;
1413
+ this._layoutParameterDictionary[parameter.getLayoutType()] = parameter;
1414
+ this._layoutParameterType = parameter.getLayoutType();
1415
+ },
1416
+
1417
+ /**
1418
+ * Gets layout parameter
1419
+ * @param {ccui.LayoutParameter.NONE|ccui.LayoutParameter.LINEAR|ccui.LayoutParameter.RELATIVE} type
1420
+ * @returns {ccui.LayoutParameter}
1421
+ */
1422
+ getLayoutParameter: function (type) {
1423
+ type = type || this._layoutParameterType;
1424
+ return this._layoutParameterDictionary[type];
1425
+ },
1426
+
1427
+ /**
1428
+ * Returns the "class name" of widget.
1429
+ * @returns {string}
1430
+ */
1431
+ getDescription: function () {
1432
+ return "Widget";
1433
+ },
1434
+
1435
+ /**
1436
+ * Clones a new widget.
1437
+ * @returns {ccui.Widget}
1438
+ */
1439
+ clone: function () {
1440
+ var clonedWidget = this._createCloneInstance();
1441
+ clonedWidget._copyProperties(this);
1442
+ clonedWidget._copyClonedWidgetChildren(this);
1443
+ return clonedWidget;
1444
+ },
1445
+
1446
+ _createCloneInstance: function () {
1447
+ return new ccui.Widget();
1448
+ },
1449
+
1450
+ _copyClonedWidgetChildren: function (model) {
1451
+ var widgetChildren = model.getChildren();
1452
+ for (var i = 0; i < widgetChildren.length; i++) {
1453
+ var locChild = widgetChildren[i];
1454
+ if (locChild instanceof ccui.Widget)
1455
+ this.addChild(locChild.clone());
1456
+ }
1457
+ },
1458
+
1459
+ _copySpecialProperties: function (model) {},
1460
+
1461
+ _copyProperties: function (widget) {
1462
+ this.setEnabled(widget.isEnabled());
1463
+ this.setVisible(widget.isVisible());
1464
+ this.setBright(widget.isBright());
1465
+ this.setTouchEnabled(widget.isTouchEnabled());
1466
+ this.setLocalZOrder(widget.getLocalZOrder());
1467
+ this.setTag(widget.getTag());
1468
+ this.setName(widget.getName());
1469
+ this.setActionTag(widget.getActionTag());
1470
+
1471
+ this._ignoreSize = widget._ignoreSize;
1472
+
1473
+ this.setContentSize(widget._contentSize);
1474
+ this._customSize.width = widget._customSize.width;
1475
+ this._customSize.height = widget._customSize.height;
1476
+
1477
+ this._copySpecialProperties(widget);
1478
+ this._sizeType = widget.getSizeType();
1479
+ this._sizePercent.x = widget._sizePercent.x;
1480
+ this._sizePercent.y = widget._sizePercent.y;
1481
+
1482
+ this._positionType = widget._positionType;
1483
+ this._positionPercent.x = widget._positionPercent.x;
1484
+ this._positionPercent.y = widget._positionPercent.y;
1485
+
1486
+ this.setPosition(widget.getPosition());
1487
+ this.setAnchorPoint(widget.getAnchorPoint());
1488
+ this.setScaleX(widget.getScaleX());
1489
+ this.setScaleY(widget.getScaleY());
1490
+ this.setRotation(widget.getRotation());
1491
+ this.setRotationX(widget.getRotationX());
1492
+ this.setRotationY(widget.getRotationY());
1493
+ this.setFlippedX(widget.isFlippedX());
1494
+ this.setFlippedY(widget.isFlippedY());
1495
+ this.setColor(widget.getColor());
1496
+ this.setOpacity(widget.getOpacity());
1497
+
1498
+ this._touchEventCallback = widget._touchEventCallback;
1499
+ this._touchEventListener = widget._touchEventListener;
1500
+ this._touchEventSelector = widget._touchEventSelector;
1501
+ this._clickEventListener = widget._clickEventListener;
1502
+ this._focused = widget._focused;
1503
+ this._focusEnabled = widget._focusEnabled;
1504
+ this._propagateTouchEvents = widget._propagateTouchEvents;
1505
+
1506
+ for (var key in widget._layoutParameterDictionary) {
1507
+ var parameter = widget._layoutParameterDictionary[key];
1508
+ if (parameter)
1509
+ this.setLayoutParameter(parameter.clone());
1510
+ }
1511
+ this._onSizeChanged();
1512
+ },
1513
+
1514
+ /*temp action*/
1515
+ setActionTag: function (tag) {
1516
+ this._actionTag = tag;
1517
+ },
1518
+
1519
+ getActionTag: function () {
1520
+ return this._actionTag;
1521
+ },
1522
+
1523
+ /**
1524
+ * Gets the left boundary position of this widget.
1525
+ * @deprecated since v3.0, please use getLeftBoundary instead.
1526
+ * @returns {number}
1527
+ */
1528
+ getLeftInParent: function(){
1529
+ cc.log("getLeftInParent is deprecated. Please use getLeftBoundary instead.");
1530
+ return this.getLeftBoundary();
1531
+ },
1532
+
1533
+ /**
1534
+ * Gets the bottom boundary position of this widget.
1535
+ * @deprecated since v3.0, please use getBottomBoundary instead.
1536
+ * @returns {number}
1537
+ */
1538
+ getBottomInParent: function(){
1539
+ cc.log("getBottomInParent is deprecated. Please use getBottomBoundary instead.");
1540
+ return this.getBottomBoundary();
1541
+ },
1542
+
1543
+ /**
1544
+ * Gets the right boundary position of this widget.
1545
+ * @deprecated since v3.0, please use getRightBoundary instead.
1546
+ * @returns {number}
1547
+ */
1548
+ getRightInParent: function(){
1549
+ cc.log("getRightInParent is deprecated. Please use getRightBoundary instead.");
1550
+ return this.getRightBoundary();
1551
+ },
1552
+
1553
+ /**
1554
+ * Gets the top boundary position of this widget.
1555
+ * @deprecated since v3.0, please use getTopBoundary instead.
1556
+ * @returns {number}
1557
+ */
1558
+ getTopInParent: function(){
1559
+ cc.log("getTopInParent is deprecated. Please use getTopBoundary instead.");
1560
+ return this.getTopBoundary();
1561
+ },
1562
+
1563
+ /**
1564
+ * Gets the touch end point of widget when widget is selected.
1565
+ * @deprecated since v3.0, please use getTouchEndPosition instead.
1566
+ * @returns {cc.Point} the touch end point.
1567
+ */
1568
+ getTouchEndPos: function () {
1569
+ cc.log("getTouchEndPos is deprecated. Please use getTouchEndPosition instead.");
1570
+ return this.getTouchEndPosition();
1571
+ },
1572
+
1573
+ /**
1574
+ *Gets the touch move point of widget when widget is selected.
1575
+ * @deprecated since v3.0, please use getTouchMovePosition instead.
1576
+ * @returns {cc.Point} the touch move point.
1577
+ */
1578
+ getTouchMovePos: function () {
1579
+ cc.log("getTouchMovePos is deprecated. Please use getTouchMovePosition instead.");
1580
+ return this.getTouchMovePosition();
1581
+ },
1582
+
1583
+ /**
1584
+ * Checks a point if in parent's area.
1585
+ * @deprecated since v3.0, please use isClippingParentContainsPoint instead.
1586
+ * @param {cc.Point} pt
1587
+ * @returns {Boolean}
1588
+ */
1589
+ clippingParentAreaContainPoint: function (pt) {
1590
+ cc.log("clippingParentAreaContainPoint is deprecated. Please use isClippingParentContainsPoint instead.");
1591
+ this.isClippingParentContainsPoint(pt);
1592
+ },
1593
+
1594
+ /**
1595
+ * Gets the touch began point of widget when widget is selected.
1596
+ * @deprecated since v3.0, please use getTouchBeganPosition instead.
1597
+ * @returns {cc.Point} the touch began point.
1598
+ */
1599
+ getTouchStartPos: function () {
1600
+ cc.log("getTouchStartPos is deprecated. Please use getTouchBeganPosition instead.");
1601
+ return this.getTouchBeganPosition();
1602
+ },
1603
+
1604
+ /**
1605
+ * Changes the size that is widget's size
1606
+ * @deprecated since v3.0, please use setContentSize instead.
1607
+ * @param {cc.Size} size that is widget's size
1608
+ */
1609
+ setSize: function (size) {
1610
+ this.setContentSize(size);
1611
+ },
1612
+
1613
+ /**
1614
+ * Returns size of widget
1615
+ * @deprecated since v3.0, please use getContentSize instead.
1616
+ * @returns {cc.Size}
1617
+ */
1618
+ getSize: function () {
1619
+ return this.getContentSize();
1620
+ },
1621
+
1622
+ /**
1623
+ * Adds a node for widget (this function is deleted in -x)
1624
+ * @param {cc.Node} node
1625
+ * @param {Number} zOrder
1626
+ * @param {Number} tag
1627
+ * @deprecated since v3.0, please use addChild instead.
1628
+ */
1629
+ addNode: function (node, zOrder, tag) {
1630
+ if (node instanceof ccui.Widget) {
1631
+ cc.log("Please use addChild to add a Widget.");
1632
+ return;
1633
+ }
1634
+ cc.Node.prototype.addChild.call(this, node, zOrder, tag);
1635
+ this._nodes.push(node);
1636
+ },
1637
+
1638
+ /**
1639
+ * Gets node by tag
1640
+ * @deprecated since v3.0, please use getChildByTag instead.
1641
+ * @param {Number} tag
1642
+ * @returns {cc.Node}
1643
+ */
1644
+ getNodeByTag: function (tag) {
1645
+ var _nodes = this._nodes;
1646
+ for (var i = 0; i < _nodes.length; i++) {
1647
+ var node = _nodes[i];
1648
+ if (node && node.getTag() == tag) {
1649
+ return node;
1650
+ }
1651
+ }
1652
+ return null;
1653
+ },
1654
+
1655
+ /**
1656
+ * Returns all children.
1657
+ * @deprecated since v3.0, please use getChildren instead.
1658
+ * @returns {Array}
1659
+ */
1660
+ getNodes: function () {
1661
+ return this._nodes;
1662
+ },
1663
+
1664
+ /**
1665
+ * Removes a node from ccui.Widget
1666
+ * @deprecated since v3.0, please use removeChild instead.
1667
+ * @param {cc.Node} node
1668
+ * @param {Boolean} cleanup
1669
+ */
1670
+ removeNode: function (node, cleanup) {
1671
+ cc.Node.prototype.removeChild.call(this, node, cleanup);
1672
+ cc.arrayRemoveObject(this._nodes, node);
1673
+ },
1674
+
1675
+ /**
1676
+ * Removes node by tag
1677
+ * @deprecated since v3.0, please use removeChildByTag instead.
1678
+ * @param {Number} tag
1679
+ * @param {Boolean} [cleanup]
1680
+ */
1681
+ removeNodeByTag: function (tag, cleanup) {
1682
+ var node = this.getChildByTag(tag);
1683
+ if (!node)
1684
+ cc.log("cocos2d: removeNodeByTag(tag = %d): child not found!", tag);
1685
+ else
1686
+ this.removeChild(node, cleanup);
1687
+ },
1688
+
1689
+ /**
1690
+ * Removes all node
1691
+ * @deprecated since v3.0, please use removeAllChildren instead.
1692
+ */
1693
+ removeAllNodes: function () {
1694
+ for (var i = 0; i < this._nodes.length; i++) {
1695
+ var node = this._nodes[i];
1696
+ cc.Node.prototype.removeChild.call(this, node);
1697
+ }
1698
+ this._nodes.length = 0;
1699
+ },
1700
+
1701
+ _findLayout: function(){
1702
+ cc.renderer.childrenOrderDirty = true;
1703
+ var layout = this._parent;
1704
+ while(layout){
1705
+ if(layout._doLayout){
1706
+ layout._doLayoutDirty = true;
1707
+ break;
1708
+ }else
1709
+ layout = layout._parent;
1710
+ }
1711
+ },
1712
+
1713
+ /**
1714
+ * @since v3.2
1715
+ * @returns {boolean} true represent the widget use Unify Size, false represent the widget couldn't use Unify Size
1716
+ */
1717
+ isUnifySizeEnabled: function(){
1718
+ return this._unifySize;
1719
+ },
1720
+
1721
+ /**
1722
+ * @since v3.2
1723
+ * @param {Boolean} enable enable Unify Size of a widget
1724
+ */
1725
+ setUnifySizeEnabled: function(enable){
1726
+ this._unifySize = enable;
1727
+ },
1728
+
1729
+ //v3.3
1730
+ _ccEventCallback: null,
1731
+ /**
1732
+ * Set a event handler to the widget in order to use cocostudio editor and framework
1733
+ * @since v3.3
1734
+ * @param {function} callback
1735
+ */
1736
+ addCCSEventListener: function(callback){
1737
+ this._ccEventCallback = callback;
1738
+ },
1739
+
1740
+ //override the scale functions.
1741
+ setScaleX: function(scaleX){
1742
+ if (this._flippedX)
1743
+ scaleX = scaleX * -1;
1744
+ cc.Node.prototype.setScaleX.call(this, scaleX);
1745
+ },
1746
+ setScaleY: function(scaleY){
1747
+ if (this._flippedY)
1748
+ scaleY = scaleY * -1;
1749
+ cc.Node.prototype.setScaleY.call(this, scaleY);
1750
+ },
1751
+ setScale: function(scaleX, scaleY){
1752
+ if(scaleY === undefined)
1753
+ scaleY = scaleX;
1754
+ this.setScaleX(scaleX);
1755
+ this.setScaleY(scaleY);
1756
+ },
1757
+
1758
+ getScaleX: function(){
1759
+ var originalScale = cc.Node.prototype.getScaleX.call(this);
1760
+ if (this._flippedX)
1761
+ originalScale = originalScale * -1.0;
1762
+ return originalScale;
1763
+ },
1764
+ getScaleY: function(){
1765
+ var originalScale = cc.Node.prototype.getScaleY.call(this);
1766
+ if (this._flippedY)
1767
+ originalScale = originalScale * -1.0;
1768
+ return originalScale;
1769
+ },
1770
+ getScale: function(){
1771
+ if(this.getScaleX() == this.getScaleY())
1772
+ cc.log("Widget#scale. ScaleX != ScaleY. Don't know which one to return");
1773
+ return this.getScaleX();
1774
+ },
1775
+
1776
+ /**
1777
+ * Sets callback name to widget.
1778
+ * @since v3.3
1779
+ * @param {String} callbackName
1780
+ */
1781
+ setCallbackName: function(callbackName){
1782
+ this._callbackName = callbackName;
1783
+ },
1784
+
1785
+ /**
1786
+ * Gets callback name of widget
1787
+ * @since v3.3
1788
+ * @returns {String|Null}
1789
+ */
1790
+ getCallbackName: function(){
1791
+ return this._callbackName;
1792
+ },
1793
+
1794
+ /**
1795
+ * Sets callback type to widget
1796
+ * @since v3.3
1797
+ * @param {String} callbackType
1798
+ */
1799
+ setCallbackType: function(callbackType){
1800
+ this._callbackType = callbackType;
1801
+ },
1802
+
1803
+ /**
1804
+ * Gets callback type of widget
1805
+ * @since v3.3
1806
+ * @returns {String|null}
1807
+ */
1808
+ getCallbackType: function(){
1809
+ return this._callbackType;
1810
+ },
1811
+
1812
+ /**
1813
+ * Whether enable layout component of a widget
1814
+ * @since v3.3
1815
+ * @param {Boolean} enable enable layout Component of a widget
1816
+ */
1817
+ setLayoutComponentEnabled: function(enable){
1818
+ this._usingLayoutComponent = enable;
1819
+ },
1820
+
1821
+ /**
1822
+ * Returns whether enable layout component of a widget
1823
+ * @return {Boolean} true represent the widget use Layout Component, false represent the widget couldn't use Layout Component.
1824
+ */
1825
+ isLayoutComponentEnabled: function(){
1826
+ return this._usingLayoutComponent;
1827
+ },
1828
+
1829
+
1830
+ _createRenderCmd: function(){
1831
+ if(cc._renderType === cc._RENDER_TYPE_WEBGL)
1832
+ return new ccui.Widget.WebGLRenderCmd(this);
1833
+ else
1834
+ return new ccui.Widget.CanvasRenderCmd(this);
1835
+ }
1836
+ });
1837
+
1838
+ var _p = ccui.Widget.prototype;
1839
+
1840
+ // Extended properties
1841
+ /** @expose */
1842
+ _p.xPercent;
1843
+ cc.defineGetterSetter(_p, "xPercent", _p._getXPercent, _p._setXPercent);
1844
+ /** @expose */
1845
+ _p.yPercent;
1846
+ cc.defineGetterSetter(_p, "yPercent", _p._getYPercent, _p._setYPercent);
1847
+ /** @expose */
1848
+ _p.widthPercent;
1849
+ cc.defineGetterSetter(_p, "widthPercent", _p._getWidthPercent, _p._setWidthPercent);
1850
+ /** @expose */
1851
+ _p.heightPercent;
1852
+ cc.defineGetterSetter(_p, "heightPercent", _p._getHeightPercent, _p._setHeightPercent);
1853
+ /** @expose */
1854
+ _p.widgetParent;
1855
+ cc.defineGetterSetter(_p, "widgetParent", _p.getWidgetParent);
1856
+ /** @expose */
1857
+ _p.enabled;
1858
+ cc.defineGetterSetter(_p, "enabled", _p.isEnabled, _p.setEnabled);
1859
+ /** @expose */
1860
+ _p.focused;
1861
+ cc.defineGetterSetter(_p, "focused", _p.isFocused, _p.setFocused);
1862
+ /** @expose */
1863
+ _p.sizeType;
1864
+ cc.defineGetterSetter(_p, "sizeType", _p.getSizeType, _p.setSizeType);
1865
+ /** @expose */
1866
+ _p.widgetType;
1867
+ cc.defineGetterSetter(_p, "widgetType", _p.getWidgetType);
1868
+ /** @expose */
1869
+ _p.touchEnabled;
1870
+ cc.defineGetterSetter(_p, "touchEnabled", _p.isTouchEnabled, _p.setTouchEnabled);
1871
+ /** @expose */
1872
+ _p.updateEnabled;
1873
+ cc.defineGetterSetter(_p, "updateEnabled", _p.isUpdateEnabled, _p.setUpdateEnabled);
1874
+ /** @expose */
1875
+ _p.bright;
1876
+ cc.defineGetterSetter(_p, "bright", _p.isBright, _p.setBright);
1877
+ /** @expose */
1878
+ _p.name;
1879
+ cc.defineGetterSetter(_p, "name", _p.getName, _p.setName);
1880
+ /** @expose */
1881
+ _p.actionTag;
1882
+ cc.defineGetterSetter(_p, "actionTag", _p.getActionTag, _p.setActionTag);
1883
+ /** @expose */
1884
+ _p.opacity;
1885
+ cc.defineGetterSetter(_p, "opacity", _p.getOpacity, _p.setOpacity);
1886
+
1887
+ _p = null;
1888
+
1889
+ /**
1890
+ * allocates and initializes a UIWidget.
1891
+ * @deprecated
1892
+ * @return {ccui.Widget}
1893
+ */
1894
+ ccui.Widget.create = function () {
1895
+ return new ccui.Widget();
1896
+ };
1897
+
1898
+ ccui.Widget._focusedWidget = null; //both layout & widget will be stored in this variable
1899
+ ccui.Widget._focusNavigationController = null;
1900
+
1901
+ /**
1902
+ * call this method with parameter true to enable the Android Dpad focus navigation feature
1903
+ * @note it doesn't implemented on Web
1904
+ * @param {Boolean} enable set true to enable dpad focus navigation, otherwise disable dpad focus navigation
1905
+ */
1906
+ ccui.Widget.enableDpadNavigation = function(enable){
1907
+ if (enable){
1908
+ if (null == ccui.Widget._focusNavigationController) {
1909
+ ccui.Widget._focusNavigationController = new ccui._FocusNavigationController();
1910
+ if (ccui.Widget._focusedWidget) {
1911
+ ccui.Widget._focusNavigationController._setFirstFocsuedWidget(ccui.Widget._focusedWidget);
1912
+ }
1913
+ }
1914
+ ccui.Widget._focusNavigationController.enableFocusNavigation(true);
1915
+ } else {
1916
+ if(ccui.Widget._focusNavigationController){
1917
+ ccui.Widget._focusNavigationController.enableFocusNavigation(false);
1918
+ ccui.Widget._focusNavigationController = null;
1919
+ }
1920
+ }
1921
+ };
1922
+
1923
+ /**
1924
+ * Gets the focused widget of current stage.
1925
+ * @function
1926
+ * @returns {null|ccui.Widget}
1927
+ */
1928
+ ccui.Widget.getCurrentFocusedWidget = function(){
1929
+ return ccui.Widget._focusedWidget;
1930
+ };
1931
+
1932
+ // Constants
1933
+ //bright style
1934
+ /**
1935
+ * None bright style of ccui.Widget.
1936
+ * @constant
1937
+ * @type {number}
1938
+ */
1939
+ ccui.Widget.BRIGHT_STYLE_NONE = -1;
1940
+ /**
1941
+ * Normal bright style of ccui.Widget.
1942
+ * @constant
1943
+ * @type {number}
1944
+ */
1945
+ ccui.Widget.BRIGHT_STYLE_NORMAL = 0;
1946
+ /**
1947
+ * Light bright style of ccui.Widget.
1948
+ * @constant
1949
+ * @type {number}
1950
+ */
1951
+ ccui.Widget.BRIGHT_STYLE_HIGH_LIGHT = 1;
1952
+
1953
+ //widget type
1954
+ /**
1955
+ * The type code of Widget for ccui controls.
1956
+ * @constant
1957
+ * @type {number}
1958
+ */
1959
+ ccui.Widget.TYPE_WIDGET = 0;
1960
+ /**
1961
+ * The type code of Container for ccui controls.
1962
+ * @constant
1963
+ * @type {number}
1964
+ */
1965
+ ccui.Widget.TYPE_CONTAINER = 1;
1966
+
1967
+ //Focus Direction
1968
+ /**
1969
+ * The left of Focus direction for ccui.Widget
1970
+ * @constant
1971
+ * @type {number}
1972
+ */
1973
+ ccui.Widget.LEFT = 0;
1974
+ /**
1975
+ * The right of Focus direction for ccui.Widget
1976
+ * @constant
1977
+ * @type {number}
1978
+ */
1979
+ ccui.Widget.RIGHT = 1;
1980
+ /**
1981
+ * The up of Focus direction for ccui.Widget
1982
+ * @constant
1983
+ * @type {number}
1984
+ */
1985
+ ccui.Widget.UP = 2;
1986
+ /**
1987
+ * The down of Focus direction for ccui.Widget
1988
+ * @constant
1989
+ * @type {number}
1990
+ */
1991
+ ccui.Widget.DOWN = 3;
1992
+
1993
+ //texture resource type
1994
+ /**
1995
+ * The image file texture type of ccui.Widget loads.
1996
+ * @constant
1997
+ * @type {number}
1998
+ */
1999
+ ccui.Widget.LOCAL_TEXTURE = 0;
2000
+ /**
2001
+ * The sprite frame texture type of ccui.Widget loads.
2002
+ * @constant
2003
+ * @type {number}
2004
+ */
2005
+ ccui.Widget.PLIST_TEXTURE = 1;
2006
+
2007
+ //touch event type
2008
+ /**
2009
+ * The touch began type of ccui.Widget's touch event
2010
+ * @constant
2011
+ * @type {number}
2012
+ */
2013
+ ccui.Widget.TOUCH_BEGAN = 0;
2014
+ /**
2015
+ * The touch moved type of ccui.Widget's touch event
2016
+ * @constant
2017
+ * @type {number}
2018
+ */
2019
+ ccui.Widget.TOUCH_MOVED = 1;
2020
+ /**
2021
+ * The touch end type of ccui.Widget's touch event
2022
+ * @constant
2023
+ * @type {number}
2024
+ */
2025
+ ccui.Widget.TOUCH_ENDED = 2;
2026
+ /**
2027
+ * The touch canceled type of ccui.Widget's touch event
2028
+ * @constant
2029
+ * @type {number}
2030
+ */
2031
+ ccui.Widget.TOUCH_CANCELED = 3;
2032
+
2033
+ //size type
2034
+ /**
2035
+ * The absolute of ccui.Widget's size type.
2036
+ * @constant
2037
+ * @type {number}
2038
+ */
2039
+ ccui.Widget.SIZE_ABSOLUTE = 0;
2040
+ /**
2041
+ * The percent of ccui.Widget's size type.
2042
+ * @constant
2043
+ * @type {number}
2044
+ */
2045
+ ccui.Widget.SIZE_PERCENT = 1;
2046
+
2047
+ //position type
2048
+ /**
2049
+ * The absolute of ccui.Widget's position type.
2050
+ * @constant
2051
+ * @type {number}
2052
+ */
2053
+ ccui.Widget.POSITION_ABSOLUTE = 0;
2054
+ /**
2055
+ * The percent of ccui.Widget's position type.
2056
+ * @constant
2057
+ * @type {number}
2058
+ */
2059
+ ccui.Widget.POSITION_PERCENT = 1;