ccb 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.txt +20 -0
- data/README.md +31 -0
- data/bin/ccb +4 -0
- data/lib/ccb/builder/project_builder.rb +14 -0
- data/lib/ccb/builder/scene_builder.rb +9 -0
- data/lib/ccb/builder/templates/project/GameConfig.js.tt +21 -0
- data/lib/ccb/builder/templates/project/_cocos-project.json +4 -0
- data/lib/ccb/builder/templates/project/folder/CMakeLists.txt +295 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/Base64Images.js +32 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/CCBoot.js +2271 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/CCDebugger.js +336 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions/CCAction.js +694 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions/CCActionCamera.js +293 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions/CCActionCatmullRom.js +605 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions/CCActionEase.js +3681 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions/CCActionInstant.js +757 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions/CCActionInterval.js +3554 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions/CCActionTween.js +166 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions3d/CCActionGrid.js +372 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions3d/CCActionGrid3D.js +1257 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions3d/CCActionPageTurn3D.js +113 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/actions3d/CCActionTiledGrid.js +1289 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/audio/CCAudio.js +1024 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/clipping-nodes/CCClippingNode.js +224 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/clipping-nodes/CCClippingNodeCanvasRenderCmd.js +227 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/clipping-nodes/CCClippingNodeWebGLRenderCmd.js +226 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/compression/ZipUtils.js +82 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/compression/base64.js +95 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/compression/gzip.js +731 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/compression/zlib.min.js +55 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCActionManager.js +378 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCCamera.js +290 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCConfiguration.js +294 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCDirector.js +1019 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCDirectorWebGL.js +329 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCDrawingPrimitivesCanvas.js +438 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCDrawingPrimitivesWebGL.js +464 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/CCScheduler.js +744 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/base-nodes/BaseNodesPropertyDefine.js +127 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/base-nodes/CCAtlasNode.js +294 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/base-nodes/CCAtlasNodeCanvasRenderCmd.js +138 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/base-nodes/CCAtlasNodeWebGLRenderCmd.js +145 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/base-nodes/CCNode.js +2386 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/base-nodes/CCNodeCanvasRenderCmd.js +504 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/base-nodes/CCNodeWebGLRenderCmd.js +254 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/cocoa/CCAffineTransform.js +259 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/cocoa/CCGeometry.js +327 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/event-manager/CCEvent.js +449 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/event-manager/CCEventExtension.js +126 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/event-manager/CCEventListener.js +519 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/event-manager/CCEventManager.js +1025 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/event-manager/CCTouch.js +175 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/labelttf/CCLabelTTF.js +829 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/labelttf/CCLabelTTFCanvasRenderCmd.js +420 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/labelttf/CCLabelTTFWebGLRenderCmd.js +101 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/labelttf/LabelTTFPropertyDefine.js +88 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/layers/CCLayer.js +642 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/layers/CCLayerCanvasRenderCmd.js +434 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/layers/CCLayerWebGLRenderCmd.js +248 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCClass.js +333 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCCommon.js +303 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCConfig.js +303 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCEGLView.js +1245 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCInputExtension.js +135 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCInputManager.js +616 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCLoaders.js +142 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCMacro.js +830 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCSAXParser.js +160 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCScreen.js +155 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCTypes.js +374 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCTypesPropertyDefine.js +165 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCTypesWebGL.js +689 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/CCVisibleRect.js +100 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/platform/miniFramework.js +264 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/renderer/RendererCanvas.js +274 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/renderer/RendererWebGL.js +137 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/scenes/CCLoaderScene.js +149 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/scenes/CCScene.js +62 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCAnimation.js +477 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCAnimationCache.js +213 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCBakeSprite.js +71 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSprite.js +1014 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSpriteBatchNode.js +676 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSpriteBatchNodeCanvasRenderCmd.js +101 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSpriteBatchNodeWebGLRenderCmd.js +243 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSpriteCanvasRenderCmd.js +518 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSpriteFrame.js +420 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSpriteFrameCache.js +341 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/CCSpriteWebGLRenderCmd.js +493 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/sprites/SpritesPropertyDefine.js +67 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/support/CCPointExtension.js +515 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/support/CCVertex.js +170 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/support/TransformUtils.js +62 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/textures/CCTexture2D.js +455 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/textures/CCTextureAtlas.js +653 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/textures/CCTextureCache.js +371 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/textures/TexturesPropertyDefine.js +221 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/textures/TexturesWebGL.js +899 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/core/utils/BinaryLoader.js +151 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/effects/CCGrabber.js +110 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/effects/CCGrid.js +737 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/aabb.js +68 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/gl/mat4stack.js +59 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/gl/matrix.js +169 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/mat3.js +329 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/mat4.js +810 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/plane.js +184 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/quaternion.js +497 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/ray2.js +163 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/utility.js +76 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/vec2.js +107 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/vec3.js +205 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/kazmath/vec4.js +158 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/labels/CCLabelAtlas.js +239 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/labels/CCLabelAtlasCanvasRenderCmd.js +95 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/labels/CCLabelAtlasWebGLRenderCmd.js +132 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/labels/CCLabelBMFont.js +958 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/labels/CCLabelBMFontCanvasRenderCmd.js +142 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/labels/CCLabelBMFontWebGLRenderCmd.js +87 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/menus/CCMenu.js +600 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/menus/CCMenuItem.js +1422 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/motion-streak/CCMotionStreak.js +517 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/motion-streak/CCMotionStreakWebGLRenderCmd.js +66 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/node-grid/CCNodeGrid.js +129 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/node-grid/CCNodeGridWebGLRenderCmd.js +98 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/parallax/CCParallaxNode.js +252 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/parallax/CCParallaxNodeRenderCmd.js +69 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCPNGReader.js +330 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCParticleBatchNode.js +527 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCParticleBatchNodeCanvasRenderCmd.js +38 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCParticleBatchNodeWebGLRenderCmd.js +74 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCParticleExamples.js +1006 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCParticleSystem.js +2294 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCParticleSystemCanvasRenderCmd.js +217 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCParticleSystemWebGLRenderCmd.js +402 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/particle/CCTIFFReader.js +692 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/physics/CCPhysicsDebugNode.js +212 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/physics/CCPhysicsDebugNodeCanvasRenderCmd.js +52 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/physics/CCPhysicsDebugNodeWebGLRenderCmd.js +53 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/physics/CCPhysicsSprite.js +447 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/physics/CCPhysicsSpriteCanvasRenderCmd.js +93 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/physics/CCPhysicsSpriteWebGLRenderCmd.js +87 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/progress-timer/CCActionProgressTimer.js +227 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/progress-timer/CCProgressTimer.js +345 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/progress-timer/CCProgressTimerCanvasRenderCmd.js +270 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/progress-timer/CCProgressTimerWebGLRenderCmd.js +486 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/render-texture/CCRenderTexture.js +395 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/render-texture/CCRenderTextureCanvasRenderCmd.js +105 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/render-texture/CCRenderTextureWebGLRenderCmd.js +367 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/shaders/CCGLProgram.js +767 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/shaders/CCGLStateCache.js +340 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/shaders/CCShaderCache.js +301 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/shaders/CCShaders.js +280 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/shape-nodes/CCDrawNode.js +940 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/shape-nodes/CCDrawNodeCanvasRenderCmd.js +129 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/shape-nodes/CCDrawNodeWebGLRenderCmd.js +41 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/text-input/CCIMEDispatcher.js +526 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/text-input/CCTextFieldTTF.js +472 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/tilemap/CCTGAlib.js +437 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/tilemap/CCTMXLayer.js +914 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/tilemap/CCTMXLayerCanvasRenderCmd.js +232 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/tilemap/CCTMXLayerWebGLRenderCmd.js +67 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/tilemap/CCTMXObjectGroup.js +146 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/tilemap/CCTMXTiledMap.js +479 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/tilemap/CCTMXXMLParser.js +950 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/transitions/CCTransition.js +1971 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/transitions/CCTransitionPageTurn.js +152 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/cocos2d/transitions/CCTransitionProgress.js +458 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCBAnimationManager.js +770 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCBKeyframe.js +60 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCBReader.js +1129 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCBReaderUtil.js +61 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCBRelativePositioning.js +90 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCBSequence.js +114 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCBValue.js +81 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCControlLoader.js +318 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCNodeLoader.js +905 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCNodeLoaderLibrary.js +101 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccb-reader/CCSpriteLoader.js +544 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccpool/CCPool.js +146 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/CCProtectedNode.js +305 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/CCProtectedNodeCanvasRenderCmd.js +246 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/CCProtectedNodeWebGLRenderCmd.js +159 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/UIScale9Sprite.js +1105 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/UIScale9SpriteCanvasRenderCmd.js +142 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/UIScale9SpriteWebGLRenderCmd.js +129 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/UIWidget.js +2059 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/base-classes/UIWidgetRenderCmd.js +100 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UIHBox.js +80 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UILayout.js +1558 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UILayoutCanvasRenderCmd.js +179 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UILayoutComponent.js +585 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UILayoutManager.js +457 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UILayoutParameter.js +576 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UILayoutWebGLRenderCmd.js +240 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UIRelativeBox.js +79 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/layouts/UIVBox.js +79 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/system/CocosGUI.js +62 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/system/UIHelper.js +164 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UIButton.js +987 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UICheckBox.js +737 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UIImageView.js +337 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UILoadingBar.js +432 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UIRichText.js +579 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UISlider.js +762 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UIText.js +512 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UITextAtlas.js +229 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UITextBMFont.js +216 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/UITextField.js +915 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/scroll-widget/UIListView.js +602 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/scroll-widget/UIPageView.js +657 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/ccui/uiwidgets/scroll-widget/UIScrollView.js +1884 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/CocoStudio.js +68 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/action/CCActionFrame.js +528 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/action/CCActionManager.js +112 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/action/CCActionNode.js +417 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/action/CCActionObject.js +263 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/CCArmature.js +579 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/CCArmatureCanvasRenderCmd.js +190 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/CCArmatureWebGLRenderCmd.js +167 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/CCBone.js +711 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/animation/CCArmatureAnimation.js +669 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/animation/CCProcessBase.js +365 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/animation/CCTween.js +448 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/datas/CCDatas.js +807 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/display/CCDecorativeDisplay.js +118 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/display/CCDisplayFactory.js +220 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/display/CCDisplayManager.js +465 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/display/CCSkin.js +215 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/display/CCSkinCanvasRenderCmd.js +58 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/display/CCSkinWebGLRenderCmd.js +146 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/physics/CCColliderDetector.js +397 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/utils/CCArmatureDataManager.js +325 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/utils/CCArmatureDefine.js +45 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/utils/CCDataReaderHelper.js +1223 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/utils/CCSpriteFrameCacheHelper.js +68 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/utils/CCTransformHelp.js +183 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/utils/CCTweenFunction.js +501 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/armature/utils/CCUtilMath.js +69 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/components/CCComAttribute.js +210 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/components/CCComAudio.js +285 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/components/CCComController.js +76 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/components/CCComRender.js +91 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/components/CCComponent.js +136 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/components/CCComponentContainer.js +159 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/load.js +221 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/parsers/action-1.x.js +238 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/parsers/action-2.x.js +266 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/parsers/compatible.js +251 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/parsers/scene-1.x.js +262 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/parsers/timelineParser-1.x.js +292 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/parsers/timelineParser-2.x.js +1288 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/loader/parsers/uiParser-1.x.js +680 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/timeline/ActionTimeline.js +448 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/timeline/Frame.js +1268 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/timeline/Timeline.js +321 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/trigger/ObjectFactory.js +99 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/trigger/TriggerBase.js +49 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/trigger/TriggerMng.js +301 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/cocostudio/trigger/TriggerObj.js +263 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/editbox/CCEditBox.js +716 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/editbox/CCdomNode.js +657 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControl.js +381 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlButton.js +688 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlColourPicker.js +187 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlHuePicker.js +218 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlPotentiometer.js +300 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlSaturationBrightnessPicker.js +257 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlSlider.js +308 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlStepper.js +390 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlSwitch.js +425 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCControlUtils.js +177 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCInvocation.js +65 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCMenuPassive.js +415 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCScale9Sprite.js +1099 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCScale9SpriteCanvasRenderCmd.js +142 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/control-extension/CCScale9SpriteWebGLRenderCmd.js +129 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/scrollview/CCScrollView.js +827 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/scrollview/CCScrollViewCanvasRenderCmd.js +79 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/scrollview/CCScrollViewWebGLRenderCmd.js +108 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/scrollview/CCSorting.js +239 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/gui/scrollview/CCTableView.js +718 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/spine/CCSkeleton.js +357 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/spine/CCSkeletonAnimation.js +340 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/spine/CCSkeletonCanvasRenderCmd.js +165 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/spine/CCSkeletonWebGLRenderCmd.js +165 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/extensions/spine/Spine.js +2239 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/external/box2d/box2d.js +10882 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/external/chipmunk/chipmunk.js +6196 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/external/pluginx/Plugin.js +254 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/external/pluginx/platform/facebook.js +557 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/external/pluginx/platform/facebook_sdk.js +151 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/external/socketio/socket.io.min.js +2 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/jsb_apis.js +618 -0
- data/lib/ccb/builder/templates/project/folder/frameworks/cocos2d-html5/moduleConfig.json +453 -0
- data/lib/ccb/builder/templates/project/folder/project.json +42 -0
- data/lib/ccb/builder/templates/project/folder/res/CloseNormal.png +0 -0
- data/lib/ccb/builder/templates/project/folder/res/CloseSelected.png +0 -0
- data/lib/ccb/builder/templates/project/folder/res/HelloWorld.png +0 -0
- data/lib/ccb/builder/templates/project/folder/res/favicon.ico +0 -0
- data/lib/ccb/builder/templates/project/folder/res/gameOver/cocos2d-html5.png +0 -0
- data/lib/ccb/builder/templates/project/folder/res/gameOver/gameOver.png +0 -0
- data/lib/ccb/builder/templates/project/folder/res/mainMenu/bg.png +0 -0
- data/lib/ccb/builder/templates/project/folder/res/mainMenu/menu.png +0 -0
- data/lib/ccb/builder/templates/project/folder/res/setting/menuTitle.png +0 -0
- data/lib/ccb/builder/templates/project/folder/res/shared/arial-14.fnt +182 -0
- data/lib/ccb/builder/templates/project/folder/res/shared/arial-14.png +0 -0
- data/lib/ccb/builder/templates/project/folder/res/sound/music/bgMusic.mp3 +0 -0
- data/lib/ccb/builder/templates/project/folder/src/about/layer/ABBackgroundLayer.js +23 -0
- data/lib/ccb/builder/templates/project/folder/src/about/layer/ABTouchLayer.js +51 -0
- data/lib/ccb/builder/templates/project/folder/src/about/scene/About.js +36 -0
- data/lib/ccb/builder/templates/project/folder/src/config/Level.js +7 -0
- data/lib/ccb/builder/templates/project/folder/src/gameOver/layer/GOBackgroundLayer.js +50 -0
- data/lib/ccb/builder/templates/project/folder/src/gameOver/layer/GOTouchLayer.js +51 -0
- data/lib/ccb/builder/templates/project/folder/src/gameOver/scene/GameOver.js +38 -0
- data/lib/ccb/builder/templates/project/folder/src/gamePlay/classes/LevelManager.js +21 -0
- data/lib/ccb/builder/templates/project/folder/src/gamePlay/layer/GPBackgroundLayer.js +25 -0
- data/lib/ccb/builder/templates/project/folder/src/gamePlay/layer/GPTouchLayer.js +51 -0
- data/lib/ccb/builder/templates/project/folder/src/gamePlay/scene/GamePlay.js +44 -0
- data/lib/ccb/builder/templates/project/folder/src/mainMenu/layer/MMBackgroundLayer.js +43 -0
- data/lib/ccb/builder/templates/project/folder/src/mainMenu/layer/MMMainMenuLayer.js +38 -0
- data/lib/ccb/builder/templates/project/folder/src/mainMenu/layer/MMTouchLayer.js +96 -0
- data/lib/ccb/builder/templates/project/folder/src/mainMenu/scene/MainMenu.js +45 -0
- data/lib/ccb/builder/templates/project/folder/src/resource.js +29 -0
- data/lib/ccb/builder/templates/project/folder/src/setting/layer/STBackgroundLayer.js +25 -0
- data/lib/ccb/builder/templates/project/folder/src/setting/layer/STTouchLayer.js +89 -0
- data/lib/ccb/builder/templates/project/folder/src/setting/scene/Setting.js +40 -0
- data/lib/ccb/builder/templates/project/index.html.tt +27 -0
- data/lib/ccb/builder/templates/project/main.js.tt +62 -0
- data/lib/ccb/cli.rb +32 -0
- data/lib/ccb/ext/method_hooker.rb +68 -0
- data/lib/ccb/ext/string_extention.rb +7 -0
- data/lib/ccb.rb +1 -0
- metadata +449 -0
@@ -0,0 +1,2386 @@
|
|
1
|
+
/****************************************************************************
|
2
|
+
Copyright (c) 2008-2010 Ricardo Quesada
|
3
|
+
Copyright (c) 2011-2012 cocos2d-x.org
|
4
|
+
Copyright (c) 2013-2014 Chukong Technologies Inc.
|
5
|
+
|
6
|
+
http://www.cocos2d-x.org
|
7
|
+
|
8
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
+
of this software and associated documentation files (the "Software"), to deal
|
10
|
+
in the Software without restriction, including without limitation the rights
|
11
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
12
|
+
copies of the Software, and to permit persons to whom the Software is
|
13
|
+
furnished to do so, subject to the following conditions:
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be included in
|
16
|
+
all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
21
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
+
THE SOFTWARE.
|
25
|
+
****************************************************************************/
|
26
|
+
|
27
|
+
/**
|
28
|
+
* Default Node tag
|
29
|
+
* @constant
|
30
|
+
* @type Number
|
31
|
+
*/
|
32
|
+
cc.NODE_TAG_INVALID = -1;
|
33
|
+
|
34
|
+
/**
|
35
|
+
* XXX: Yes, nodes might have a sort problem once every 15 days if the game runs at 60 FPS and each frame sprites are reordered.
|
36
|
+
*/
|
37
|
+
cc.s_globalOrderOfArrival = 1;
|
38
|
+
|
39
|
+
/**
|
40
|
+
* <p>cc.Node is the root class of all node. Anything that gets drawn or contains things that get drawn is a cc.Node.<br/>
|
41
|
+
* The most popular cc.Nodes are: cc.Scene, cc.Layer, cc.Sprite, cc.Menu.</p>
|
42
|
+
*
|
43
|
+
* <p>The main features of a cc.Node are: <br/>
|
44
|
+
* - They can contain other cc.Node nodes (addChild, getChildByTag, removeChild, etc) <br/>
|
45
|
+
* - They can schedule periodic callback (schedule, unschedule, etc) <br/>
|
46
|
+
* - They can execute actions (runAction, stopAction, etc) <br/></p>
|
47
|
+
*
|
48
|
+
* <p>Some cc.Node nodes provide extra functionality for them or their children.</p>
|
49
|
+
*
|
50
|
+
* <p>Subclassing a cc.Node usually means (one/all) of: <br/>
|
51
|
+
* - overriding constructor function "ctor" to initialize resources and schedule callbacks<br/>
|
52
|
+
* - create callbacks to handle the advancement of time<br/></p>
|
53
|
+
*
|
54
|
+
* <p>Features of cc.Node: <br/>
|
55
|
+
* - position <br/>
|
56
|
+
* - scale (x, y) <br/>
|
57
|
+
* - rotation (in degrees, clockwise)<br/>
|
58
|
+
* - anchor point<br/>
|
59
|
+
* - size <br/>
|
60
|
+
* - color <br/>
|
61
|
+
* - opacity <br/>
|
62
|
+
* - visible<br/>
|
63
|
+
* - z-order<br/>
|
64
|
+
* - WebGL z position<br/></P>
|
65
|
+
*
|
66
|
+
* <p> Default values: <br/>
|
67
|
+
* - rotation: 0 <br/>
|
68
|
+
* - position: (x=0,y=0) <br/>
|
69
|
+
* - scale: (x=1,y=1) <br/>
|
70
|
+
* - contentSize: (x=0,y=0)<br/>
|
71
|
+
* - anchorPoint: (x=0,y=0)<br/>
|
72
|
+
* - color: (r=255,g=255,b=255)<br/>
|
73
|
+
* - opacity: 255</p>
|
74
|
+
*
|
75
|
+
* <p> Limitations:<br/>
|
76
|
+
* - A cc.Node is a "void" object. It doesn't have a texture <br/></P>
|
77
|
+
*
|
78
|
+
* <p>Order in transformations with grid disabled <br/>
|
79
|
+
* -# The node will be translated (position) <br/>
|
80
|
+
* -# The node will be rotated (rotation)<br/>
|
81
|
+
* -# The node will be scaled (scale) <br/>
|
82
|
+
*
|
83
|
+
* <p>Order in transformations with grid enabled<br/>
|
84
|
+
* -# The node will be translated (position)<br/>
|
85
|
+
* -# The node will be rotated (rotation) <br/>
|
86
|
+
* -# The node will be scaled (scale) <br/>
|
87
|
+
* -# The grid will capture the screen <br/>
|
88
|
+
* -# The node will be moved according to the camera values (camera) <br/>
|
89
|
+
* -# The grid will render the captured screen <br/></P>
|
90
|
+
*
|
91
|
+
* @class
|
92
|
+
* @extends cc.Class
|
93
|
+
*
|
94
|
+
* @property {Number} x - x axis position of node
|
95
|
+
* @property {Number} y - y axis position of node
|
96
|
+
* @property {Number} width - Width of node
|
97
|
+
* @property {Number} height - Height of node
|
98
|
+
* @property {Number} anchorX - Anchor point's position on x axis
|
99
|
+
* @property {Number} anchorY - Anchor point's position on y axis
|
100
|
+
* @property {Boolean} ignoreAnchor - Indicate whether ignore the anchor point property for positioning
|
101
|
+
* @property {Number} skewX - Skew x
|
102
|
+
* @property {Number} skewY - Skew y
|
103
|
+
* @property {Number} zIndex - Z order in depth which stands for the drawing order
|
104
|
+
* @property {Number} vertexZ - WebGL Z vertex of this node, z order works OK if all the nodes uses the same openGL Z vertex
|
105
|
+
* @property {Number} rotation - Rotation of node
|
106
|
+
* @property {Number} rotationX - Rotation on x axis
|
107
|
+
* @property {Number} rotationY - Rotation on y axis
|
108
|
+
* @property {Number} scale - Scale of node
|
109
|
+
* @property {Number} scaleX - Scale on x axis
|
110
|
+
* @property {Number} scaleY - Scale on y axis
|
111
|
+
* @property {Boolean} visible - Indicate whether node is visible or not
|
112
|
+
* @property {cc.Color} color - Color of node, default value is white: (255, 255, 255)
|
113
|
+
* @property {Boolean} cascadeColor - Indicate whether node's color value affect its child nodes, default value is false
|
114
|
+
* @property {Number} opacity - Opacity of node, default value is 255
|
115
|
+
* @property {Boolean} opacityModifyRGB - Indicate whether opacity affect the color value, default value is false
|
116
|
+
* @property {Boolean} cascadeOpacity - Indicate whether node's opacity value affect its child nodes, default value is false
|
117
|
+
* @property {Array} children - <@readonly> All children nodes
|
118
|
+
* @property {Number} childrenCount - <@readonly> Number of children
|
119
|
+
* @property {cc.Node} parent - Parent node
|
120
|
+
* @property {Boolean} running - <@readonly> Indicate whether node is running or not
|
121
|
+
* @property {Number} tag - Tag of node
|
122
|
+
* @property {Object} userData - Custom user data
|
123
|
+
* @property {Object} userObject - User assigned CCObject, similar to userData, but instead of holding a void* it holds an id
|
124
|
+
* @property {Number} arrivalOrder - The arrival order, indicates which children is added previously
|
125
|
+
* @property {cc.ActionManager} actionManager - The CCActionManager object that is used by all actions.
|
126
|
+
* @property {cc.Scheduler} scheduler - cc.Scheduler used to schedule all "updates" and timers.
|
127
|
+
* @property {cc.GridBase} grid - grid object that is used when applying effects
|
128
|
+
* @property {cc.GLProgram} shaderProgram - The shader program currently used for this node
|
129
|
+
* @property {Number} glServerState - The state of OpenGL server side
|
130
|
+
*/
|
131
|
+
cc.Node = cc.Class.extend(/** @lends cc.Node# */{
|
132
|
+
_localZOrder: 0, ///< Local order (relative to its siblings) used to sort the node
|
133
|
+
_globalZOrder: 0, ///< Global order used to sort the node
|
134
|
+
_vertexZ: 0.0,
|
135
|
+
|
136
|
+
_rotationX: 0,
|
137
|
+
_rotationY: 0.0,
|
138
|
+
_scaleX: 1.0,
|
139
|
+
_scaleY: 1.0,
|
140
|
+
_position: null,
|
141
|
+
|
142
|
+
_normalizedPosition:null,
|
143
|
+
_usingNormalizedPosition: false,
|
144
|
+
_normalizedPositionDirty: false,
|
145
|
+
|
146
|
+
_skewX: 0.0,
|
147
|
+
_skewY: 0.0,
|
148
|
+
// children (lazy allocs),
|
149
|
+
_children: null,
|
150
|
+
// lazy alloc,
|
151
|
+
_visible: true,
|
152
|
+
_anchorPoint: null,
|
153
|
+
_contentSize: null,
|
154
|
+
_running: false,
|
155
|
+
_parent: null,
|
156
|
+
|
157
|
+
// "whole screen" objects. like Scenes and Layers, should set _ignoreAnchorPointForPosition to true
|
158
|
+
_ignoreAnchorPointForPosition: false,
|
159
|
+
tag: cc.NODE_TAG_INVALID,
|
160
|
+
// userData is always initialized as nil
|
161
|
+
userData: null,
|
162
|
+
userObject: null,
|
163
|
+
|
164
|
+
//since 2.0 api
|
165
|
+
_reorderChildDirty: false,
|
166
|
+
_shaderProgram: null,
|
167
|
+
arrivalOrder: 0,
|
168
|
+
|
169
|
+
_actionManager: null,
|
170
|
+
_scheduler: null,
|
171
|
+
_eventDispatcher: null,
|
172
|
+
|
173
|
+
_additionalTransformDirty: false,
|
174
|
+
_additionalTransform: null,
|
175
|
+
_componentContainer: null,
|
176
|
+
_isTransitionFinished: false,
|
177
|
+
|
178
|
+
_className: "Node",
|
179
|
+
_showNode: false,
|
180
|
+
_name: "", ///<a string label, an user defined string to identify this node
|
181
|
+
|
182
|
+
_realOpacity: 255,
|
183
|
+
_realColor: null,
|
184
|
+
_cascadeColorEnabled: false,
|
185
|
+
_cascadeOpacityEnabled: false,
|
186
|
+
|
187
|
+
_renderCmd:null,
|
188
|
+
|
189
|
+
/**
|
190
|
+
* Constructor function, override it to extend the construction behavior, remember to call "this._super()" in the extended "ctor" function.
|
191
|
+
* @function
|
192
|
+
*/
|
193
|
+
ctor: function(){
|
194
|
+
this._initNode();
|
195
|
+
this._initRendererCmd();
|
196
|
+
},
|
197
|
+
|
198
|
+
_initNode: function () {
|
199
|
+
var _t = this;
|
200
|
+
_t._anchorPoint = cc.p(0, 0);
|
201
|
+
_t._contentSize = cc.size(0, 0);
|
202
|
+
_t._position = cc.p(0, 0);
|
203
|
+
_t._normalizedPosition = cc.p(0,0);
|
204
|
+
_t._children = [];
|
205
|
+
|
206
|
+
var director = cc.director;
|
207
|
+
_t._actionManager = director.getActionManager();
|
208
|
+
_t._scheduler = director.getScheduler();
|
209
|
+
|
210
|
+
_t._additionalTransform = cc.affineTransformMakeIdentity();
|
211
|
+
if (cc.ComponentContainer) {
|
212
|
+
_t._componentContainer = new cc.ComponentContainer(_t);
|
213
|
+
}
|
214
|
+
|
215
|
+
this._realOpacity = 255;
|
216
|
+
this._realColor = cc.color(255, 255, 255, 255);
|
217
|
+
this._cascadeColorEnabled = false;
|
218
|
+
this._cascadeOpacityEnabled = false;
|
219
|
+
},
|
220
|
+
|
221
|
+
/**
|
222
|
+
* Initializes the instance of cc.Node
|
223
|
+
* @function
|
224
|
+
* @returns {boolean} Whether the initialization was successful.
|
225
|
+
*/
|
226
|
+
init: function () {
|
227
|
+
//this._initNode(); //this has been called in ctor.
|
228
|
+
return true;
|
229
|
+
},
|
230
|
+
|
231
|
+
_arrayMakeObjectsPerformSelector: function (array, callbackType) {
|
232
|
+
if (!array || array.length === 0)
|
233
|
+
return;
|
234
|
+
|
235
|
+
var i, len = array.length, node;
|
236
|
+
var nodeCallbackType = cc.Node._stateCallbackType;
|
237
|
+
switch (callbackType) {
|
238
|
+
case nodeCallbackType.onEnter:
|
239
|
+
for (i = 0; i < len; i++) {
|
240
|
+
node = array[i];
|
241
|
+
if (node)
|
242
|
+
node.onEnter();
|
243
|
+
}
|
244
|
+
break;
|
245
|
+
case nodeCallbackType.onExit:
|
246
|
+
for (i = 0; i < len; i++) {
|
247
|
+
node = array[i];
|
248
|
+
if (node)
|
249
|
+
node.onExit();
|
250
|
+
}
|
251
|
+
break;
|
252
|
+
case nodeCallbackType.onEnterTransitionDidFinish:
|
253
|
+
for (i = 0; i < len; i++) {
|
254
|
+
node = array[i];
|
255
|
+
if (node)
|
256
|
+
node.onEnterTransitionDidFinish();
|
257
|
+
}
|
258
|
+
break;
|
259
|
+
case nodeCallbackType.cleanup:
|
260
|
+
for (i = 0; i < len; i++) {
|
261
|
+
node = array[i];
|
262
|
+
if (node)
|
263
|
+
node.cleanup();
|
264
|
+
}
|
265
|
+
break;
|
266
|
+
case nodeCallbackType.updateTransform:
|
267
|
+
for (i = 0; i < len; i++) {
|
268
|
+
node = array[i];
|
269
|
+
if (node)
|
270
|
+
node.updateTransform();
|
271
|
+
}
|
272
|
+
break;
|
273
|
+
case nodeCallbackType.onExitTransitionDidStart:
|
274
|
+
for (i = 0; i < len; i++) {
|
275
|
+
node = array[i];
|
276
|
+
if (node)
|
277
|
+
node.onExitTransitionDidStart();
|
278
|
+
}
|
279
|
+
break;
|
280
|
+
case nodeCallbackType.sortAllChildren:
|
281
|
+
for (i = 0; i < len; i++) {
|
282
|
+
node = array[i];
|
283
|
+
if (node)
|
284
|
+
node.sortAllChildren();
|
285
|
+
}
|
286
|
+
break;
|
287
|
+
default :
|
288
|
+
cc.assert(0, cc._LogInfos.Node__arrayMakeObjectsPerformSelector);
|
289
|
+
break;
|
290
|
+
}
|
291
|
+
},
|
292
|
+
|
293
|
+
/**
|
294
|
+
* <p>Properties configuration function </br>
|
295
|
+
* All properties in attrs will be set to the node, </br>
|
296
|
+
* when the setter of the node is available, </br>
|
297
|
+
* the property will be set via setter function.</br>
|
298
|
+
* </p>
|
299
|
+
* @function
|
300
|
+
* @param {Object} attrs Properties to be set to node
|
301
|
+
*/
|
302
|
+
attr: function (attrs) {
|
303
|
+
for (var key in attrs) {
|
304
|
+
this[key] = attrs[key];
|
305
|
+
}
|
306
|
+
},
|
307
|
+
|
308
|
+
/**
|
309
|
+
* <p>Returns the skew degrees in X </br>
|
310
|
+
* The X skew angle of the node in degrees. <br/>
|
311
|
+
* This angle describes the shear distortion in the X direction.<br/>
|
312
|
+
* Thus, it is the angle between the Y axis and the left edge of the shape </br>
|
313
|
+
* The default skewX angle is 0. Positive values distort the node in a CW direction.</br>
|
314
|
+
* </p>
|
315
|
+
* @function
|
316
|
+
* @return {Number} The X skew angle of the node in degrees.
|
317
|
+
*/
|
318
|
+
getSkewX: function () {
|
319
|
+
return this._skewX;
|
320
|
+
},
|
321
|
+
|
322
|
+
/**
|
323
|
+
* <p>
|
324
|
+
* Changes the X skew angle of the node in degrees. <br/>
|
325
|
+
* <br/>
|
326
|
+
* This angle describes the shear distortion in the X direction. <br/>
|
327
|
+
* Thus, it is the angle between the Y axis and the left edge of the shape <br/>
|
328
|
+
* The default skewX angle is 0. Positive values distort the node in a CW direction.
|
329
|
+
* </p>
|
330
|
+
* @function
|
331
|
+
* @param {Number} newSkewX The X skew angle of the node in degrees.
|
332
|
+
*/
|
333
|
+
setSkewX: function (newSkewX) {
|
334
|
+
this._skewX = newSkewX;
|
335
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
336
|
+
},
|
337
|
+
|
338
|
+
/**
|
339
|
+
* <p>Returns the skew degrees in Y <br/>
|
340
|
+
* The Y skew angle of the node in degrees. <br/>
|
341
|
+
* This angle describes the shear distortion in the Y direction. <br/>
|
342
|
+
* Thus, it is the angle between the X axis and the bottom edge of the shape <br/>
|
343
|
+
* The default skewY angle is 0. Positive values distort the node in a CCW direction. <br/>
|
344
|
+
* </p>
|
345
|
+
* @function
|
346
|
+
* @return {Number} The Y skew angle of the node in degrees.
|
347
|
+
*/
|
348
|
+
getSkewY: function () {
|
349
|
+
return this._skewY;
|
350
|
+
},
|
351
|
+
|
352
|
+
/**
|
353
|
+
* <p>
|
354
|
+
* Changes the Y skew angle of the node in degrees. <br/>
|
355
|
+
* <br/>
|
356
|
+
* This angle describes the shear distortion in the Y direction. <br/>
|
357
|
+
* Thus, it is the angle between the X axis and the bottom edge of the shape <br/>
|
358
|
+
* The default skewY angle is 0. Positive values distort the node in a CCW direction. <br/>
|
359
|
+
* </p>
|
360
|
+
* @function
|
361
|
+
* @param {Number} newSkewY The Y skew angle of the node in degrees.
|
362
|
+
*/
|
363
|
+
setSkewY: function (newSkewY) {
|
364
|
+
this._skewY = newSkewY;
|
365
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
366
|
+
},
|
367
|
+
|
368
|
+
/**
|
369
|
+
* <p> LocalZOrder is the 'key' used to sort the node relative to its siblings. <br/>
|
370
|
+
* <br/>
|
371
|
+
* The Node's parent will sort all its children based ont the LocalZOrder value. <br/>
|
372
|
+
* If two nodes have the same LocalZOrder, then the node that was added first to the children's array <br/>
|
373
|
+
* will be in front of the other node in the array. <br/>
|
374
|
+
* <br/>
|
375
|
+
* Also, the Scene Graph is traversed using the "In-Order" tree traversal algorithm ( http://en.wikipedia.org/wiki/Tree_traversal#In-order )
|
376
|
+
* <br/>
|
377
|
+
* And Nodes that have LocalZOder values < 0 are the "left" subtree <br/>
|
378
|
+
* While Nodes with LocalZOder >=0 are the "right" subtree. </p>
|
379
|
+
* @function
|
380
|
+
* @param {Number} localZOrder
|
381
|
+
*/
|
382
|
+
setLocalZOrder: function (localZOrder) {
|
383
|
+
this._localZOrder = localZOrder;
|
384
|
+
if (this._parent)
|
385
|
+
this._parent.reorderChild(this, localZOrder);
|
386
|
+
cc.eventManager._setDirtyForNode(this);
|
387
|
+
},
|
388
|
+
|
389
|
+
//Helper function used by `setLocalZOrder`. Don't use it unless you know what you are doing.
|
390
|
+
_setLocalZOrder: function (localZOrder) {
|
391
|
+
this._localZOrder = localZOrder;
|
392
|
+
},
|
393
|
+
|
394
|
+
/**
|
395
|
+
* Returns the local Z order of this node.
|
396
|
+
* @function
|
397
|
+
* @returns {Number} The local (relative to its siblings) Z order.
|
398
|
+
*/
|
399
|
+
getLocalZOrder: function () {
|
400
|
+
return this._localZOrder;
|
401
|
+
},
|
402
|
+
|
403
|
+
/**
|
404
|
+
* Returns z order of this node
|
405
|
+
* @function
|
406
|
+
* @return {Number}
|
407
|
+
* @deprecated since 3.0, please use getLocalZOrder instead
|
408
|
+
*/
|
409
|
+
getZOrder: function () {
|
410
|
+
cc.log(cc._LogInfos.Node_getZOrder);
|
411
|
+
return this.getLocalZOrder();
|
412
|
+
},
|
413
|
+
|
414
|
+
/**
|
415
|
+
* <p>
|
416
|
+
* Sets the Z order which stands for the drawing order, and reorder this node in its parent's children array. <br/>
|
417
|
+
* <br/>
|
418
|
+
* The Z order of node is relative to its "brothers": children of the same parent. <br/>
|
419
|
+
* It's nothing to do with OpenGL's z vertex. This one only affects the draw order of nodes in cocos2d. <br/>
|
420
|
+
* The larger number it is, the later this node will be drawn in each message loop. <br/>
|
421
|
+
* Please refer to setVertexZ(float) for the difference.
|
422
|
+
* </p>
|
423
|
+
* @function
|
424
|
+
* @param {Number} z Z order of this node.
|
425
|
+
* @deprecated since 3.0, please use setLocalZOrder instead
|
426
|
+
*/
|
427
|
+
setZOrder: function (z) {
|
428
|
+
cc.log(cc._LogInfos.Node_setZOrder);
|
429
|
+
this.setLocalZOrder(z);
|
430
|
+
},
|
431
|
+
|
432
|
+
/**
|
433
|
+
* <p>Defines the oder in which the nodes are renderer. <br/>
|
434
|
+
* Nodes that have a Global Z Order lower, are renderer first. <br/>
|
435
|
+
* <br/>
|
436
|
+
* In case two or more nodes have the same Global Z Order, the oder is not guaranteed. <br/>
|
437
|
+
* The only exception if the Nodes have a Global Z Order == 0. In that case, the Scene Graph order is used. <br/>
|
438
|
+
* <br/>
|
439
|
+
* By default, all nodes have a Global Z Order = 0. That means that by default, the Scene Graph order is used to render the nodes. <br/>
|
440
|
+
* <br/>
|
441
|
+
* Global Z Order is useful when you need to render nodes in an order different than the Scene Graph order. <br/>
|
442
|
+
* <br/>
|
443
|
+
* Limitations: Global Z Order can't be used used by Nodes that have SpriteBatchNode as one of their ancestors. <br/>
|
444
|
+
* And if ClippingNode is one of the ancestors, then "global Z order" will be relative to the ClippingNode. </p>
|
445
|
+
* @function
|
446
|
+
* @param {Number} globalZOrder
|
447
|
+
*/
|
448
|
+
setGlobalZOrder: function (globalZOrder) {
|
449
|
+
if (this._globalZOrder != globalZOrder) {
|
450
|
+
this._globalZOrder = globalZOrder;
|
451
|
+
cc.eventManager._setDirtyForNode(this);
|
452
|
+
}
|
453
|
+
},
|
454
|
+
|
455
|
+
/**
|
456
|
+
* Return the Node's Global Z Order.
|
457
|
+
* @function
|
458
|
+
* @returns {number} The node's global Z order
|
459
|
+
*/
|
460
|
+
getGlobalZOrder: function () {
|
461
|
+
return this._globalZOrder;
|
462
|
+
},
|
463
|
+
|
464
|
+
/**
|
465
|
+
* Returns WebGL Z vertex of this node.
|
466
|
+
* @function
|
467
|
+
* @return {Number} WebGL Z vertex of this node
|
468
|
+
*/
|
469
|
+
getVertexZ: function () {
|
470
|
+
return this._vertexZ;
|
471
|
+
},
|
472
|
+
|
473
|
+
/**
|
474
|
+
* <p>
|
475
|
+
* Sets the real WebGL Z vertex. <br/>
|
476
|
+
* <br/>
|
477
|
+
* Differences between openGL Z vertex and cocos2d Z order: <br/>
|
478
|
+
* - WebGL Z modifies the Z vertex, and not the Z order in the relation between parent-children <br/>
|
479
|
+
* - WebGL Z might require to set 2D projection <br/>
|
480
|
+
* - cocos2d Z order works OK if all the nodes uses the same WebGL Z vertex. eg: vertexZ = 0 <br/>
|
481
|
+
* <br/>
|
482
|
+
* @warning Use it at your own risk since it might break the cocos2d parent-children z order
|
483
|
+
* </p>
|
484
|
+
* @function
|
485
|
+
* @param {Number} Var
|
486
|
+
*/
|
487
|
+
setVertexZ: function (Var) {
|
488
|
+
this._vertexZ = Var;
|
489
|
+
},
|
490
|
+
|
491
|
+
/**
|
492
|
+
* Returns the rotation (angle) of the node in degrees. 0 is the default rotation angle. Positive values rotate node clockwise.
|
493
|
+
* @function
|
494
|
+
* @return {Number} The rotation of the node in degrees.
|
495
|
+
*/
|
496
|
+
getRotation: function () {
|
497
|
+
if (this._rotationX !== this._rotationY)
|
498
|
+
cc.log(cc._LogInfos.Node_getRotation);
|
499
|
+
return this._rotationX;
|
500
|
+
},
|
501
|
+
|
502
|
+
/**
|
503
|
+
* <p>
|
504
|
+
* Sets the rotation (angle) of the node in degrees. <br/>
|
505
|
+
* <br/>
|
506
|
+
* 0 is the default rotation angle. <br/>
|
507
|
+
* Positive values rotate node clockwise, and negative values for anti-clockwise.
|
508
|
+
* </p>
|
509
|
+
* @function
|
510
|
+
* @param {Number} newRotation The rotation of the node in degrees.
|
511
|
+
*/
|
512
|
+
setRotation: function (newRotation) {
|
513
|
+
this._rotationX = this._rotationY = newRotation;
|
514
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
515
|
+
},
|
516
|
+
|
517
|
+
/**
|
518
|
+
* Returns the X axis rotation (angle) which represent a horizontal rotational skew of the node in degrees. <br/>
|
519
|
+
* 0 is the default rotation angle. Positive values rotate node clockwise<br/>
|
520
|
+
* (support only in WebGL rendering mode)
|
521
|
+
* @function
|
522
|
+
* @return {Number} The X rotation in degrees.
|
523
|
+
*/
|
524
|
+
getRotationX: function () {
|
525
|
+
return this._rotationX;
|
526
|
+
},
|
527
|
+
|
528
|
+
/**
|
529
|
+
* <p>
|
530
|
+
* Sets the X rotation (angle) of the node in degrees which performs a horizontal rotational skew. <br/>
|
531
|
+
* (support only in WebGL rendering mode) <br/>
|
532
|
+
* 0 is the default rotation angle. <br/>
|
533
|
+
* Positive values rotate node clockwise, and negative values for anti-clockwise.
|
534
|
+
* </p>
|
535
|
+
* @param {Number} rotationX The X rotation in degrees which performs a horizontal rotational skew.
|
536
|
+
*/
|
537
|
+
setRotationX: function (rotationX) {
|
538
|
+
this._rotationX = rotationX;
|
539
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
540
|
+
},
|
541
|
+
|
542
|
+
/**
|
543
|
+
* Returns the Y axis rotation (angle) which represent a vertical rotational skew of the node in degrees. <br/>
|
544
|
+
* 0 is the default rotation angle. Positive values rotate node clockwise<br/>
|
545
|
+
* (support only in WebGL rendering mode)
|
546
|
+
* @function
|
547
|
+
* @return {Number} The Y rotation in degrees.
|
548
|
+
*/
|
549
|
+
getRotationY: function () {
|
550
|
+
return this._rotationY;
|
551
|
+
},
|
552
|
+
|
553
|
+
/**
|
554
|
+
* <p>
|
555
|
+
* Sets the Y rotation (angle) of the node in degrees which performs a vertical rotational skew. <br/>
|
556
|
+
* (support only in WebGL rendering mode) <br/>
|
557
|
+
* 0 is the default rotation angle. <br/>
|
558
|
+
* Positive values rotate node clockwise, and negative values for anti-clockwise.
|
559
|
+
* </p>
|
560
|
+
* @param rotationY The Y rotation in degrees.
|
561
|
+
*/
|
562
|
+
setRotationY: function (rotationY) {
|
563
|
+
this._rotationY = rotationY;
|
564
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
565
|
+
},
|
566
|
+
|
567
|
+
/**
|
568
|
+
* Returns the scale factor of the node.
|
569
|
+
* @warning: Assertion will fail when _scaleX != _scaleY.
|
570
|
+
* @function
|
571
|
+
* @return {Number} The scale factor
|
572
|
+
*/
|
573
|
+
getScale: function () {
|
574
|
+
if (this._scaleX !== this._scaleY)
|
575
|
+
cc.log(cc._LogInfos.Node_getScale);
|
576
|
+
return this._scaleX;
|
577
|
+
},
|
578
|
+
|
579
|
+
/**
|
580
|
+
* Sets the scale factor of the node. 1.0 is the default scale factor. This function can modify the X and Y scale at the same time.
|
581
|
+
* @function
|
582
|
+
* @param {Number} scale or scaleX value
|
583
|
+
* @param {Number} [scaleY=]
|
584
|
+
*/
|
585
|
+
setScale: function (scale, scaleY) {
|
586
|
+
this._scaleX = scale;
|
587
|
+
this._scaleY = (scaleY || scaleY === 0) ? scaleY : scale;
|
588
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
589
|
+
},
|
590
|
+
|
591
|
+
/**
|
592
|
+
* Returns the scale factor on X axis of this node
|
593
|
+
* @function
|
594
|
+
* @return {Number} The scale factor on X axis.
|
595
|
+
*/
|
596
|
+
getScaleX: function () {
|
597
|
+
return this._scaleX;
|
598
|
+
},
|
599
|
+
|
600
|
+
/**
|
601
|
+
* <p>
|
602
|
+
* Changes the scale factor on X axis of this node <br/>
|
603
|
+
* The default value is 1.0 if you haven't changed it before
|
604
|
+
* </p>
|
605
|
+
* @function
|
606
|
+
* @param {Number} newScaleX The scale factor on X axis.
|
607
|
+
*/
|
608
|
+
setScaleX: function (newScaleX) {
|
609
|
+
this._scaleX = newScaleX;
|
610
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
611
|
+
},
|
612
|
+
|
613
|
+
/**
|
614
|
+
* Returns the scale factor on Y axis of this node
|
615
|
+
* @function
|
616
|
+
* @return {Number} The scale factor on Y axis.
|
617
|
+
*/
|
618
|
+
getScaleY: function () {
|
619
|
+
return this._scaleY;
|
620
|
+
},
|
621
|
+
|
622
|
+
/**
|
623
|
+
* <p>
|
624
|
+
* Changes the scale factor on Y axis of this node <br/>
|
625
|
+
* The Default value is 1.0 if you haven't changed it before.
|
626
|
+
* </p>
|
627
|
+
* @function
|
628
|
+
* @param {Number} newScaleY The scale factor on Y axis.
|
629
|
+
*/
|
630
|
+
setScaleY: function (newScaleY) {
|
631
|
+
this._scaleY = newScaleY;
|
632
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
633
|
+
},
|
634
|
+
|
635
|
+
/**
|
636
|
+
* <p>
|
637
|
+
* Changes the position (x,y) of the node in cocos2d coordinates.<br/>
|
638
|
+
* The original point (0,0) is at the left-bottom corner of screen.<br/>
|
639
|
+
* Usually we use cc.p(x,y) to compose CCPoint object.<br/>
|
640
|
+
* and Passing two numbers (x,y) is more efficient than passing CCPoint object.
|
641
|
+
* </p>
|
642
|
+
* @function
|
643
|
+
* @param {cc.Point|Number} newPosOrxValue The position (x,y) of the node in coordinates or the X coordinate for position
|
644
|
+
* @param {Number} [yValue] Y coordinate for position
|
645
|
+
* @example
|
646
|
+
* var size = cc.winSize;
|
647
|
+
* node.setPosition(size.width/2, size.height/2);
|
648
|
+
*/
|
649
|
+
setPosition: function (newPosOrxValue, yValue) {
|
650
|
+
var locPosition = this._position;
|
651
|
+
if (yValue === undefined) {
|
652
|
+
if(locPosition.x === newPosOrxValue.x && locPosition.y === newPosOrxValue.y)
|
653
|
+
return;
|
654
|
+
locPosition.x = newPosOrxValue.x;
|
655
|
+
locPosition.y = newPosOrxValue.y;
|
656
|
+
} else {
|
657
|
+
if(locPosition.x === newPosOrxValue.x && locPosition.y === yValue)
|
658
|
+
return;
|
659
|
+
locPosition.x = newPosOrxValue;
|
660
|
+
locPosition.y = yValue;
|
661
|
+
}
|
662
|
+
this._usingNormalizedPosition = false;
|
663
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
664
|
+
},
|
665
|
+
|
666
|
+
/**
|
667
|
+
* <p>
|
668
|
+
* Sets the position (x,y) using values between 0 and 1. <br/>
|
669
|
+
* The positions in pixels is calculated like the following: <br/>
|
670
|
+
* _position = _normalizedPosition * parent.getContentSize()
|
671
|
+
* </p>
|
672
|
+
* @param {cc.Point|Number} posOrX
|
673
|
+
* @param {Number} [y]
|
674
|
+
*/
|
675
|
+
setNormalizedPosition: function(posOrX, y){
|
676
|
+
var locPosition = this._normalizedPosition;
|
677
|
+
if (y === undefined) {
|
678
|
+
locPosition.x = posOrX.x;
|
679
|
+
locPosition.y = posOrX.y;
|
680
|
+
} else {
|
681
|
+
locPosition.x = posOrX;
|
682
|
+
locPosition.y = y;
|
683
|
+
}
|
684
|
+
this._normalizedPositionDirty = this._usingNormalizedPosition = true;
|
685
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
686
|
+
},
|
687
|
+
|
688
|
+
/**
|
689
|
+
* <p>Returns a copy of the position (x,y) of the node in cocos2d coordinates. (0,0) is the left-bottom corner.</p>
|
690
|
+
* @function
|
691
|
+
* @return {cc.Point} The position (x,y) of the node in OpenGL coordinates
|
692
|
+
*/
|
693
|
+
getPosition: function () {
|
694
|
+
return cc.p(this._position);
|
695
|
+
},
|
696
|
+
|
697
|
+
/**
|
698
|
+
* returns the normalized position
|
699
|
+
* @returns {cc.Point}
|
700
|
+
*/
|
701
|
+
getNormalizedPosition: function(){
|
702
|
+
return cc.p(this._normalizedPosition);
|
703
|
+
},
|
704
|
+
|
705
|
+
/**
|
706
|
+
* <p>Returns the x axis position of the node in cocos2d coordinates.</p>
|
707
|
+
* @function
|
708
|
+
* @return {Number}
|
709
|
+
*/
|
710
|
+
getPositionX: function () {
|
711
|
+
return this._position.x;
|
712
|
+
},
|
713
|
+
|
714
|
+
/**
|
715
|
+
* <p>Sets the x axis position of the node in cocos2d coordinates.</p>
|
716
|
+
* @function
|
717
|
+
* @param {Number} x The new position in x axis
|
718
|
+
*/
|
719
|
+
setPositionX: function (x) {
|
720
|
+
this._position.x = x;
|
721
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
722
|
+
},
|
723
|
+
|
724
|
+
/**
|
725
|
+
* <p>Returns the y axis position of the node in cocos2d coordinates.</p>
|
726
|
+
* @function
|
727
|
+
* @return {Number}
|
728
|
+
*/
|
729
|
+
getPositionY: function () {
|
730
|
+
return this._position.y;
|
731
|
+
},
|
732
|
+
|
733
|
+
/**
|
734
|
+
* <p>Sets the y axis position of the node in cocos2d coordinates.</p>
|
735
|
+
* @function
|
736
|
+
* @param {Number} y The new position in y axis
|
737
|
+
*/
|
738
|
+
setPositionY: function (y) {
|
739
|
+
this._position.y = y;
|
740
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
741
|
+
},
|
742
|
+
|
743
|
+
/**
|
744
|
+
* Returns the amount of children.
|
745
|
+
* @function
|
746
|
+
* @return {Number} The amount of children.
|
747
|
+
*/
|
748
|
+
getChildrenCount: function () {
|
749
|
+
return this._children.length;
|
750
|
+
},
|
751
|
+
|
752
|
+
/**
|
753
|
+
* Returns an array of all children <br/>
|
754
|
+
* Composing a "tree" structure is a very important feature of CCNode
|
755
|
+
* @function
|
756
|
+
* @return {Array} An array of children
|
757
|
+
* @example
|
758
|
+
* //This sample code traverses all children nodes, and set their position to (0,0)
|
759
|
+
* var allChildren = parent.getChildren();
|
760
|
+
* for(var i = 0; i< allChildren.length; i++) {
|
761
|
+
* allChildren[i].setPosition(0,0);
|
762
|
+
* }
|
763
|
+
*/
|
764
|
+
getChildren: function () {
|
765
|
+
return this._children;
|
766
|
+
},
|
767
|
+
|
768
|
+
/**
|
769
|
+
* Returns if the node is visible
|
770
|
+
* @function
|
771
|
+
* @see cc.Node#setVisible
|
772
|
+
* @return {Boolean} true if the node is visible, false if the node is hidden.
|
773
|
+
*/
|
774
|
+
isVisible: function () {
|
775
|
+
return this._visible;
|
776
|
+
},
|
777
|
+
|
778
|
+
/**
|
779
|
+
* Sets whether the node is visible <br/>
|
780
|
+
* The default value is true
|
781
|
+
* @function
|
782
|
+
* @param {Boolean} visible Pass true to make the node visible, false to hide the node.
|
783
|
+
*/
|
784
|
+
setVisible: function (visible) {
|
785
|
+
if(this._visible !== visible){
|
786
|
+
this._visible = visible;
|
787
|
+
//if(visible)
|
788
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
789
|
+
cc.renderer.childrenOrderDirty = true;
|
790
|
+
}
|
791
|
+
},
|
792
|
+
|
793
|
+
/**
|
794
|
+
* <p>Returns a copy of the anchor point.<br/>
|
795
|
+
* Anchor point is the point around which all transformations and positioning manipulations take place.<br/>
|
796
|
+
* It's like a pin in the node where it is "attached" to its parent. <br/>
|
797
|
+
* The anchorPoint is normalized, like a percentage. (0,0) means the bottom-left corner and (1,1) means the top-right corner. <br/>
|
798
|
+
* But you can use values higher than (1,1) and lower than (0,0) too. <br/>
|
799
|
+
* The default anchor point is (0.5,0.5), so it starts at the center of the node. <br/></p>
|
800
|
+
* @function
|
801
|
+
* @return {cc.Point} The anchor point of node.
|
802
|
+
*/
|
803
|
+
getAnchorPoint: function () {
|
804
|
+
return cc.p(this._anchorPoint);
|
805
|
+
},
|
806
|
+
|
807
|
+
/**
|
808
|
+
* <p>
|
809
|
+
* Sets the anchor point in percent. <br/>
|
810
|
+
* <br/>
|
811
|
+
* anchor point is the point around which all transformations and positioning manipulations take place. <br/>
|
812
|
+
* It's like a pin in the node where it is "attached" to its parent. <br/>
|
813
|
+
* The anchorPoint is normalized, like a percentage. (0,0) means the bottom-left corner and (1,1) means the top-right corner. <br/>
|
814
|
+
* But you can use values higher than (1,1) and lower than (0,0) too. <br/>
|
815
|
+
* The default anchor point is (0.5,0.5), so it starts at the center of the node.
|
816
|
+
* </p>
|
817
|
+
* @function
|
818
|
+
* @param {cc.Point|Number} point The anchor point of node or The x axis anchor of node.
|
819
|
+
* @param {Number} [y] The y axis anchor of node.
|
820
|
+
*/
|
821
|
+
setAnchorPoint: function (point, y) {
|
822
|
+
var locAnchorPoint = this._anchorPoint;
|
823
|
+
if (y === undefined) {
|
824
|
+
if ((point.x === locAnchorPoint.x) && (point.y === locAnchorPoint.y))
|
825
|
+
return;
|
826
|
+
locAnchorPoint.x = point.x;
|
827
|
+
locAnchorPoint.y = point.y;
|
828
|
+
} else {
|
829
|
+
if ((point === locAnchorPoint.x) && (y === locAnchorPoint.y))
|
830
|
+
return;
|
831
|
+
locAnchorPoint.x = point;
|
832
|
+
locAnchorPoint.y = y;
|
833
|
+
}
|
834
|
+
this._renderCmd._updateAnchorPointInPoint();
|
835
|
+
},
|
836
|
+
|
837
|
+
_getAnchorX: function () {
|
838
|
+
return this._anchorPoint.x;
|
839
|
+
},
|
840
|
+
_setAnchorX: function (x) {
|
841
|
+
if (this._anchorPoint.x === x) return;
|
842
|
+
this._anchorPoint.x = x;
|
843
|
+
this._renderCmd._updateAnchorPointInPoint();
|
844
|
+
},
|
845
|
+
_getAnchorY: function () {
|
846
|
+
return this._anchorPoint.y;
|
847
|
+
},
|
848
|
+
_setAnchorY: function (y) {
|
849
|
+
if (this._anchorPoint.y === y) return;
|
850
|
+
this._anchorPoint.y = y;
|
851
|
+
this._renderCmd._updateAnchorPointInPoint();
|
852
|
+
},
|
853
|
+
|
854
|
+
/**
|
855
|
+
* Returns a copy of the anchor point in absolute pixels. <br/>
|
856
|
+
* you can only read it. If you wish to modify it, use setAnchorPoint
|
857
|
+
* @see cc.Node#getAnchorPoint
|
858
|
+
* @function
|
859
|
+
* @return {cc.Point} The anchor point in absolute pixels.
|
860
|
+
*/
|
861
|
+
getAnchorPointInPoints: function () {
|
862
|
+
return this._renderCmd.getAnchorPointInPoints();
|
863
|
+
},
|
864
|
+
|
865
|
+
_getWidth: function () {
|
866
|
+
return this._contentSize.width;
|
867
|
+
},
|
868
|
+
_setWidth: function (width) {
|
869
|
+
this._contentSize.width = width;
|
870
|
+
this._renderCmd._updateAnchorPointInPoint();
|
871
|
+
},
|
872
|
+
_getHeight: function () {
|
873
|
+
return this._contentSize.height;
|
874
|
+
},
|
875
|
+
_setHeight: function (height) {
|
876
|
+
this._contentSize.height = height;
|
877
|
+
this._renderCmd._updateAnchorPointInPoint();
|
878
|
+
},
|
879
|
+
|
880
|
+
/**
|
881
|
+
* <p>Returns a copy the untransformed size of the node. <br/>
|
882
|
+
* The contentSize remains the same no matter the node is scaled or rotated.<br/>
|
883
|
+
* All nodes has a size. Layer and Scene has the same size of the screen by default. <br/></p>
|
884
|
+
* @function
|
885
|
+
* @return {cc.Size} The untransformed size of the node.
|
886
|
+
*/
|
887
|
+
getContentSize: function () {
|
888
|
+
return cc.size(this._contentSize);
|
889
|
+
},
|
890
|
+
|
891
|
+
/**
|
892
|
+
* <p>
|
893
|
+
* Sets the untransformed size of the node. <br/>
|
894
|
+
* <br/>
|
895
|
+
* The contentSize remains the same no matter the node is scaled or rotated. <br/>
|
896
|
+
* All nodes has a size. Layer and Scene has the same size of the screen.
|
897
|
+
* </p>
|
898
|
+
* @function
|
899
|
+
* @param {cc.Size|Number} size The untransformed size of the node or The untransformed size's width of the node.
|
900
|
+
* @param {Number} [height] The untransformed size's height of the node.
|
901
|
+
*/
|
902
|
+
setContentSize: function (size, height) {
|
903
|
+
var locContentSize = this._contentSize;
|
904
|
+
if (height === undefined) {
|
905
|
+
if ((size.width === locContentSize.width) && (size.height === locContentSize.height))
|
906
|
+
return;
|
907
|
+
locContentSize.width = size.width;
|
908
|
+
locContentSize.height = size.height;
|
909
|
+
} else {
|
910
|
+
if ((size === locContentSize.width) && (height === locContentSize.height))
|
911
|
+
return;
|
912
|
+
locContentSize.width = size;
|
913
|
+
locContentSize.height = height;
|
914
|
+
}
|
915
|
+
this._renderCmd._updateAnchorPointInPoint();
|
916
|
+
},
|
917
|
+
|
918
|
+
/**
|
919
|
+
* <p>
|
920
|
+
* Returns whether or not the node accepts event callbacks. <br/>
|
921
|
+
* Running means the node accept event callbacks like onEnter(), onExit(), update()
|
922
|
+
* </p>
|
923
|
+
* @function
|
924
|
+
* @return {Boolean} Whether or not the node is running.
|
925
|
+
*/
|
926
|
+
isRunning: function () {
|
927
|
+
return this._running;
|
928
|
+
},
|
929
|
+
|
930
|
+
/**
|
931
|
+
* Returns a reference to the parent node
|
932
|
+
* @function
|
933
|
+
* @return {cc.Node} A reference to the parent node
|
934
|
+
*/
|
935
|
+
getParent: function () {
|
936
|
+
return this._parent;
|
937
|
+
},
|
938
|
+
|
939
|
+
/**
|
940
|
+
* Sets the parent node
|
941
|
+
* @param {cc.Node} parent A reference to the parent node
|
942
|
+
*/
|
943
|
+
setParent: function (parent) {
|
944
|
+
this._parent = parent;
|
945
|
+
},
|
946
|
+
|
947
|
+
/**
|
948
|
+
* Returns whether the anchor point will be ignored when you position this node.<br/>
|
949
|
+
* When anchor point ignored, position will be calculated based on the origin point (0, 0) in parent's coordinates.
|
950
|
+
* @function
|
951
|
+
* @see cc.Node#ignoreAnchorPointForPosition
|
952
|
+
* @return {Boolean} true if the anchor point will be ignored when you position this node.
|
953
|
+
*/
|
954
|
+
isIgnoreAnchorPointForPosition: function () {
|
955
|
+
return this._ignoreAnchorPointForPosition;
|
956
|
+
},
|
957
|
+
|
958
|
+
/**
|
959
|
+
* <p>
|
960
|
+
* Sets whether the anchor point will be ignored when you position this node. <br/>
|
961
|
+
* When anchor point ignored, position will be calculated based on the origin point (0, 0) in parent's coordinates. <br/>
|
962
|
+
* This is an internal method, only used by CCLayer and CCScene. Don't call it outside framework. <br/>
|
963
|
+
* The default value is false, while in CCLayer and CCScene are true
|
964
|
+
* </p>
|
965
|
+
* @function
|
966
|
+
* @param {Boolean} newValue true if anchor point will be ignored when you position this node
|
967
|
+
*/
|
968
|
+
ignoreAnchorPointForPosition: function (newValue) {
|
969
|
+
if (newValue != this._ignoreAnchorPointForPosition) {
|
970
|
+
this._ignoreAnchorPointForPosition = newValue;
|
971
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
972
|
+
}
|
973
|
+
},
|
974
|
+
|
975
|
+
/**
|
976
|
+
* Returns a tag that is used to identify the node easily.
|
977
|
+
* @function
|
978
|
+
* @return {Number} An integer that identifies the node.
|
979
|
+
* @example
|
980
|
+
* //You can set tags to node then identify them easily.
|
981
|
+
* // set tags
|
982
|
+
* node1.setTag(TAG_PLAYER);
|
983
|
+
* node2.setTag(TAG_MONSTER);
|
984
|
+
* node3.setTag(TAG_BOSS);
|
985
|
+
* parent.addChild(node1);
|
986
|
+
* parent.addChild(node2);
|
987
|
+
* parent.addChild(node3);
|
988
|
+
* // identify by tags
|
989
|
+
* var allChildren = parent.getChildren();
|
990
|
+
* for(var i = 0; i < allChildren.length; i++){
|
991
|
+
* switch(node.getTag()) {
|
992
|
+
* case TAG_PLAYER:
|
993
|
+
* break;
|
994
|
+
* case TAG_MONSTER:
|
995
|
+
* break;
|
996
|
+
* case TAG_BOSS:
|
997
|
+
* break;
|
998
|
+
* }
|
999
|
+
* }
|
1000
|
+
*/
|
1001
|
+
getTag: function () {
|
1002
|
+
return this.tag;
|
1003
|
+
},
|
1004
|
+
|
1005
|
+
/**
|
1006
|
+
* Changes the tag that is used to identify the node easily. <br/>
|
1007
|
+
* Please refer to getTag for the sample code.
|
1008
|
+
* @function
|
1009
|
+
* @see cc.Node#getTag
|
1010
|
+
* @param {Number} tag A integer that identifies the node.
|
1011
|
+
*/
|
1012
|
+
setTag: function (tag) {
|
1013
|
+
this.tag = tag;
|
1014
|
+
},
|
1015
|
+
|
1016
|
+
/**
|
1017
|
+
* Changes the name that is used to identify the node easily.
|
1018
|
+
* @function
|
1019
|
+
* @param {String} name
|
1020
|
+
*/
|
1021
|
+
setName: function(name){
|
1022
|
+
this._name = name;
|
1023
|
+
},
|
1024
|
+
|
1025
|
+
/**
|
1026
|
+
* Returns a string that is used to identify the node.
|
1027
|
+
* @function
|
1028
|
+
* @returns {string} A string that identifies the node.
|
1029
|
+
*/
|
1030
|
+
getName: function(){
|
1031
|
+
return this._name;
|
1032
|
+
},
|
1033
|
+
|
1034
|
+
/**
|
1035
|
+
* <p>
|
1036
|
+
* Returns a custom user data pointer <br/>
|
1037
|
+
* You can set everything in UserData pointer, a data block, a structure or an object.
|
1038
|
+
* </p>
|
1039
|
+
* @function
|
1040
|
+
* @return {object} A custom user data pointer
|
1041
|
+
*/
|
1042
|
+
getUserData: function () {
|
1043
|
+
return this.userData;
|
1044
|
+
},
|
1045
|
+
|
1046
|
+
/**
|
1047
|
+
* <p>
|
1048
|
+
* Sets a custom user data reference <br/>
|
1049
|
+
* You can set everything in UserData reference, a data block, a structure or an object, etc.
|
1050
|
+
* </p>
|
1051
|
+
* @function
|
1052
|
+
* @warning Don't forget to release the memory manually in JSB, especially before you change this data pointer, and before this node is autoreleased.
|
1053
|
+
* @param {object} Var A custom user data
|
1054
|
+
*/
|
1055
|
+
setUserData: function (Var) {
|
1056
|
+
this.userData = Var;
|
1057
|
+
},
|
1058
|
+
|
1059
|
+
/**
|
1060
|
+
* Returns a user assigned cocos2d object. <br/>
|
1061
|
+
* Similar to userData, but instead of holding all kinds of data it can only hold a cocos2d object
|
1062
|
+
* @function
|
1063
|
+
* @return {object} A user assigned CCObject
|
1064
|
+
*/
|
1065
|
+
getUserObject: function () {
|
1066
|
+
return this.userObject;
|
1067
|
+
},
|
1068
|
+
|
1069
|
+
/**
|
1070
|
+
* <p>
|
1071
|
+
* Sets a user assigned cocos2d object <br/>
|
1072
|
+
* Similar to UserData, but instead of holding all kinds of data it can only hold a cocos2d object <br/>
|
1073
|
+
* In JSB, the UserObject will be retained once in this method, and the previous UserObject (if existed) will be release. <br/>
|
1074
|
+
* The UserObject will be released in CCNode's destruction.
|
1075
|
+
* </p>
|
1076
|
+
* @param {object} newValue A user cocos2d object
|
1077
|
+
*/
|
1078
|
+
setUserObject: function (newValue) {
|
1079
|
+
if (this.userObject != newValue)
|
1080
|
+
this.userObject = newValue;
|
1081
|
+
},
|
1082
|
+
|
1083
|
+
|
1084
|
+
/**
|
1085
|
+
* Returns the arrival order, indicates which children should be added previously.
|
1086
|
+
* @function
|
1087
|
+
* @return {Number} The arrival order.
|
1088
|
+
*/
|
1089
|
+
getOrderOfArrival: function () {
|
1090
|
+
return this.arrivalOrder;
|
1091
|
+
},
|
1092
|
+
|
1093
|
+
/**
|
1094
|
+
* <p>
|
1095
|
+
* Sets the arrival order when this node has a same ZOrder with other children. <br/>
|
1096
|
+
* <br/>
|
1097
|
+
* A node which called addChild subsequently will take a larger arrival order, <br/>
|
1098
|
+
* If two children have the same Z order, the child with larger arrival order will be drawn later.
|
1099
|
+
* </p>
|
1100
|
+
* @function
|
1101
|
+
* @warning This method is used internally for zOrder sorting, don't change this manually
|
1102
|
+
* @param {Number} Var The arrival order.
|
1103
|
+
*/
|
1104
|
+
setOrderOfArrival: function (Var) {
|
1105
|
+
this.arrivalOrder = Var;
|
1106
|
+
},
|
1107
|
+
|
1108
|
+
/**
|
1109
|
+
* <p>Returns the CCActionManager object that is used by all actions.<br/>
|
1110
|
+
* (IMPORTANT: If you set a new cc.ActionManager, then previously created actions are going to be removed.)</p>
|
1111
|
+
* @function
|
1112
|
+
* @see cc.Node#setActionManager
|
1113
|
+
* @return {cc.ActionManager} A CCActionManager object.
|
1114
|
+
*/
|
1115
|
+
getActionManager: function () {
|
1116
|
+
if (!this._actionManager)
|
1117
|
+
this._actionManager = cc.director.getActionManager();
|
1118
|
+
return this._actionManager;
|
1119
|
+
},
|
1120
|
+
|
1121
|
+
/**
|
1122
|
+
* <p>Sets the cc.ActionManager object that is used by all actions. </p>
|
1123
|
+
* @function
|
1124
|
+
* @warning If you set a new CCActionManager, then previously created actions will be removed.
|
1125
|
+
* @param {cc.ActionManager} actionManager A CCActionManager object that is used by all actions.
|
1126
|
+
*/
|
1127
|
+
setActionManager: function (actionManager) {
|
1128
|
+
if (this._actionManager != actionManager) {
|
1129
|
+
this.stopAllActions();
|
1130
|
+
this._actionManager = actionManager;
|
1131
|
+
}
|
1132
|
+
},
|
1133
|
+
|
1134
|
+
/**
|
1135
|
+
* <p>
|
1136
|
+
* Returns the cc.Scheduler object used to schedule all "updates" and timers.
|
1137
|
+
* </p>
|
1138
|
+
* @function
|
1139
|
+
* @return {cc.Scheduler} A CCScheduler object.
|
1140
|
+
*/
|
1141
|
+
getScheduler: function () {
|
1142
|
+
if (!this._scheduler)
|
1143
|
+
this._scheduler = cc.director.getScheduler();
|
1144
|
+
return this._scheduler;
|
1145
|
+
},
|
1146
|
+
|
1147
|
+
/**
|
1148
|
+
* <p>
|
1149
|
+
* Sets a CCScheduler object that is used to schedule all "updates" and timers. <br/>
|
1150
|
+
* IMPORTANT: If you set a new cc.Scheduler, then previously created timers/update are going to be removed.
|
1151
|
+
* </p>
|
1152
|
+
* @function
|
1153
|
+
* @warning If you set a new CCScheduler, then previously created timers/update are going to be removed.
|
1154
|
+
* @param scheduler A cc.Scheduler object that is used to schedule all "update" and timers.
|
1155
|
+
*/
|
1156
|
+
setScheduler: function (scheduler) {
|
1157
|
+
if (this._scheduler != scheduler) {
|
1158
|
+
this.unscheduleAllCallbacks();
|
1159
|
+
this._scheduler = scheduler;
|
1160
|
+
}
|
1161
|
+
},
|
1162
|
+
|
1163
|
+
/**
|
1164
|
+
* Returns a "local" axis aligned bounding box of the node. <br/>
|
1165
|
+
* @deprecated since v3.0, please use getBoundingBox instead
|
1166
|
+
* @return {cc.Rect}
|
1167
|
+
*/
|
1168
|
+
boundingBox: function(){
|
1169
|
+
cc.log(cc._LogInfos.Node_boundingBox);
|
1170
|
+
return this.getBoundingBox();
|
1171
|
+
},
|
1172
|
+
|
1173
|
+
/**
|
1174
|
+
* Returns a "local" axis aligned bounding box of the node. <br/>
|
1175
|
+
* The returned box is relative only to its parent.
|
1176
|
+
* @function
|
1177
|
+
* @return {cc.Rect} The calculated bounding box of the node
|
1178
|
+
*/
|
1179
|
+
getBoundingBox: function () {
|
1180
|
+
var rect = cc.rect(0, 0, this._contentSize.width, this._contentSize.height);
|
1181
|
+
return cc._rectApplyAffineTransformIn(rect, this.getNodeToParentTransform());
|
1182
|
+
},
|
1183
|
+
|
1184
|
+
/**
|
1185
|
+
* Stops all running actions and schedulers
|
1186
|
+
* @function
|
1187
|
+
*/
|
1188
|
+
cleanup: function () {
|
1189
|
+
// actions
|
1190
|
+
this.stopAllActions();
|
1191
|
+
this.unscheduleAllCallbacks();
|
1192
|
+
|
1193
|
+
// event
|
1194
|
+
cc.eventManager.removeListeners(this);
|
1195
|
+
|
1196
|
+
// timers
|
1197
|
+
this._arrayMakeObjectsPerformSelector(this._children, cc.Node._stateCallbackType.cleanup);
|
1198
|
+
},
|
1199
|
+
|
1200
|
+
// composition: GET
|
1201
|
+
/**
|
1202
|
+
* Returns a child from the container given its tag
|
1203
|
+
* @function
|
1204
|
+
* @param {Number} aTag An identifier to find the child node.
|
1205
|
+
* @return {cc.Node} a CCNode object whose tag equals to the input parameter
|
1206
|
+
*/
|
1207
|
+
getChildByTag: function (aTag) {
|
1208
|
+
var __children = this._children;
|
1209
|
+
if (__children != null) {
|
1210
|
+
for (var i = 0; i < __children.length; i++) {
|
1211
|
+
var node = __children[i];
|
1212
|
+
if (node && node.tag == aTag)
|
1213
|
+
return node;
|
1214
|
+
}
|
1215
|
+
}
|
1216
|
+
return null;
|
1217
|
+
},
|
1218
|
+
|
1219
|
+
/**
|
1220
|
+
* Returns a child from the container given its name
|
1221
|
+
* @function
|
1222
|
+
* @param {String} name A name to find the child node.
|
1223
|
+
* @return {cc.Node} a CCNode object whose name equals to the input parameter
|
1224
|
+
*/
|
1225
|
+
getChildByName: function(name){
|
1226
|
+
if(!name){
|
1227
|
+
cc.log("Invalid name");
|
1228
|
+
return null;
|
1229
|
+
}
|
1230
|
+
|
1231
|
+
var locChildren = this._children;
|
1232
|
+
for(var i = 0, len = locChildren.length; i < len; i++){
|
1233
|
+
if(locChildren[i]._name == name)
|
1234
|
+
return locChildren[i];
|
1235
|
+
}
|
1236
|
+
return null;
|
1237
|
+
},
|
1238
|
+
|
1239
|
+
// composition: ADD
|
1240
|
+
|
1241
|
+
/** <p>"add" logic MUST only be in this method <br/> </p>
|
1242
|
+
*
|
1243
|
+
* <p>If the child is added to a 'running' node, then 'onEnter' and 'onEnterTransitionDidFinish' will be called immediately.</p>
|
1244
|
+
* @function
|
1245
|
+
* @param {cc.Node} child A child node
|
1246
|
+
* @param {Number} [localZOrder=] Z order for drawing priority. Please refer to setZOrder(int)
|
1247
|
+
* @param {Number} [tag=] A integer to identify the node easily. Please refer to setTag(int)
|
1248
|
+
*/
|
1249
|
+
addChild: function (child, localZOrder, tag) {
|
1250
|
+
localZOrder = localZOrder === undefined ? child._localZOrder : localZOrder;
|
1251
|
+
var name, setTag = false;
|
1252
|
+
if(cc.isUndefined(tag)){
|
1253
|
+
tag = undefined;
|
1254
|
+
name = child._name;
|
1255
|
+
} else if(cc.isString(tag)){
|
1256
|
+
name = tag;
|
1257
|
+
tag = undefined;
|
1258
|
+
} else if(cc.isNumber(tag)){
|
1259
|
+
setTag = true;
|
1260
|
+
name = "";
|
1261
|
+
}
|
1262
|
+
|
1263
|
+
cc.assert(child, cc._LogInfos.Node_addChild_3);
|
1264
|
+
cc.assert(child._parent === null, "child already added. It can't be added again");
|
1265
|
+
|
1266
|
+
this._addChildHelper(child, localZOrder, tag, name, setTag);
|
1267
|
+
},
|
1268
|
+
|
1269
|
+
_addChildHelper: function(child, localZOrder, tag, name, setTag){
|
1270
|
+
if(!this._children)
|
1271
|
+
this._children = [];
|
1272
|
+
|
1273
|
+
this._insertChild(child, localZOrder);
|
1274
|
+
if(setTag)
|
1275
|
+
child.setTag(tag);
|
1276
|
+
else
|
1277
|
+
child.setName(name);
|
1278
|
+
|
1279
|
+
child.setParent(this);
|
1280
|
+
child.setOrderOfArrival(cc.s_globalOrderOfArrival++);
|
1281
|
+
|
1282
|
+
if( this._running ){
|
1283
|
+
child.onEnter();
|
1284
|
+
// prevent onEnterTransitionDidFinish to be called twice when a node is added in onEnter
|
1285
|
+
if (this._isTransitionFinished)
|
1286
|
+
child.onEnterTransitionDidFinish();
|
1287
|
+
}
|
1288
|
+
if (this._cascadeColorEnabled)
|
1289
|
+
child._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.colorDirty);
|
1290
|
+
if (this._cascadeOpacityEnabled)
|
1291
|
+
child._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.opacityDirty);
|
1292
|
+
},
|
1293
|
+
|
1294
|
+
// composition: REMOVE
|
1295
|
+
/**
|
1296
|
+
* Remove itself from its parent node. If cleanup is true, then also remove all actions and callbacks. <br/>
|
1297
|
+
* If the cleanup parameter is not passed, it will force a cleanup. <br/>
|
1298
|
+
* If the node orphan, then nothing happens.
|
1299
|
+
* @function
|
1300
|
+
* @param {Boolean} [cleanup=true] true if all actions and callbacks on this node should be removed, false otherwise.
|
1301
|
+
* @see cc.Node#removeFromParentAndCleanup
|
1302
|
+
*/
|
1303
|
+
removeFromParent: function (cleanup) {
|
1304
|
+
if (this._parent) {
|
1305
|
+
if (cleanup == null)
|
1306
|
+
cleanup = true;
|
1307
|
+
this._parent.removeChild(this, cleanup);
|
1308
|
+
}
|
1309
|
+
},
|
1310
|
+
|
1311
|
+
/**
|
1312
|
+
* Removes this node itself from its parent node. <br/>
|
1313
|
+
* If the node orphan, then nothing happens.
|
1314
|
+
* @deprecated since v3.0, please use removeFromParent() instead
|
1315
|
+
* @param {Boolean} [cleanup=true] true if all actions and callbacks on this node should be removed, false otherwise.
|
1316
|
+
*/
|
1317
|
+
removeFromParentAndCleanup: function (cleanup) {
|
1318
|
+
cc.log(cc._LogInfos.Node_removeFromParentAndCleanup);
|
1319
|
+
this.removeFromParent(cleanup);
|
1320
|
+
},
|
1321
|
+
|
1322
|
+
/** <p>Removes a child from the container. It will also cleanup all running actions depending on the cleanup parameter. </p>
|
1323
|
+
* If the cleanup parameter is not passed, it will force a cleanup. <br/>
|
1324
|
+
* <p> "remove" logic MUST only be on this method <br/>
|
1325
|
+
* If a class wants to extend the 'removeChild' behavior it only needs <br/>
|
1326
|
+
* to override this method </p>
|
1327
|
+
* @function
|
1328
|
+
* @param {cc.Node} child The child node which will be removed.
|
1329
|
+
* @param {Boolean} [cleanup=true] true if all running actions and callbacks on the child node will be cleanup, false otherwise.
|
1330
|
+
*/
|
1331
|
+
removeChild: function (child, cleanup) {
|
1332
|
+
// explicit nil handling
|
1333
|
+
if (this._children.length === 0)
|
1334
|
+
return;
|
1335
|
+
|
1336
|
+
if (cleanup == null)
|
1337
|
+
cleanup = true;
|
1338
|
+
if (this._children.indexOf(child) > -1)
|
1339
|
+
this._detachChild(child, cleanup);
|
1340
|
+
|
1341
|
+
//this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.visibleDirty);
|
1342
|
+
cc.renderer.childrenOrderDirty = true;
|
1343
|
+
},
|
1344
|
+
|
1345
|
+
/**
|
1346
|
+
* Removes a child from the container by tag value. It will also cleanup all running actions depending on the cleanup parameter.
|
1347
|
+
* If the cleanup parameter is not passed, it will force a cleanup. <br/>
|
1348
|
+
* @function
|
1349
|
+
* @param {Number} tag An integer number that identifies a child node
|
1350
|
+
* @param {Boolean} [cleanup=true] true if all running actions and callbacks on the child node will be cleanup, false otherwise.
|
1351
|
+
* @see cc.Node#removeChildByTag
|
1352
|
+
*/
|
1353
|
+
removeChildByTag: function (tag, cleanup) {
|
1354
|
+
if (tag === cc.NODE_TAG_INVALID)
|
1355
|
+
cc.log(cc._LogInfos.Node_removeChildByTag);
|
1356
|
+
|
1357
|
+
var child = this.getChildByTag(tag);
|
1358
|
+
if (child == null)
|
1359
|
+
cc.log(cc._LogInfos.Node_removeChildByTag_2, tag);
|
1360
|
+
else
|
1361
|
+
this.removeChild(child, cleanup);
|
1362
|
+
},
|
1363
|
+
|
1364
|
+
/**
|
1365
|
+
* Removes all children from the container and do a cleanup all running actions depending on the cleanup parameter.
|
1366
|
+
* @param {Boolean} [cleanup=true]
|
1367
|
+
*/
|
1368
|
+
removeAllChildrenWithCleanup: function (cleanup) {
|
1369
|
+
this.removeAllChildren(cleanup);
|
1370
|
+
},
|
1371
|
+
|
1372
|
+
/**
|
1373
|
+
* Removes all children from the container and do a cleanup all running actions depending on the cleanup parameter. <br/>
|
1374
|
+
* If the cleanup parameter is not passed, it will force a cleanup. <br/>
|
1375
|
+
* @function
|
1376
|
+
* @param {Boolean} [cleanup=true] true if all running actions on all children nodes should be cleanup, false otherwise.
|
1377
|
+
*/
|
1378
|
+
removeAllChildren: function (cleanup) {
|
1379
|
+
// not using detachChild improves speed here
|
1380
|
+
var __children = this._children;
|
1381
|
+
if (__children != null) {
|
1382
|
+
if (cleanup == null)
|
1383
|
+
cleanup = true;
|
1384
|
+
for (var i = 0; i < __children.length; i++) {
|
1385
|
+
var node = __children[i];
|
1386
|
+
if (node) {
|
1387
|
+
// IMPORTANT:
|
1388
|
+
// -1st do onExit
|
1389
|
+
// -2nd cleanup
|
1390
|
+
if (this._running) {
|
1391
|
+
node.onExitTransitionDidStart();
|
1392
|
+
node.onExit();
|
1393
|
+
}
|
1394
|
+
if (cleanup)
|
1395
|
+
node.cleanup();
|
1396
|
+
// set parent nil at the end
|
1397
|
+
node.parent = null;
|
1398
|
+
}
|
1399
|
+
}
|
1400
|
+
this._children.length = 0;
|
1401
|
+
}
|
1402
|
+
},
|
1403
|
+
|
1404
|
+
_detachChild: function (child, doCleanup) {
|
1405
|
+
// IMPORTANT:
|
1406
|
+
// -1st do onExit
|
1407
|
+
// -2nd cleanup
|
1408
|
+
if (this._running) {
|
1409
|
+
child.onExitTransitionDidStart();
|
1410
|
+
child.onExit();
|
1411
|
+
}
|
1412
|
+
|
1413
|
+
// If you don't do cleanup, the child's actions will not get removed and the
|
1414
|
+
if (doCleanup)
|
1415
|
+
child.cleanup();
|
1416
|
+
|
1417
|
+
// set parent nil at the end
|
1418
|
+
child.parent = null;
|
1419
|
+
child._renderCmd.detachFromParent();
|
1420
|
+
cc.arrayRemoveObject(this._children, child);
|
1421
|
+
},
|
1422
|
+
|
1423
|
+
_insertChild: function (child, z) {
|
1424
|
+
cc.renderer.childrenOrderDirty = this._reorderChildDirty = true;
|
1425
|
+
this._children.push(child);
|
1426
|
+
child._setLocalZOrder(z);
|
1427
|
+
},
|
1428
|
+
|
1429
|
+
setNodeDirty: function(){
|
1430
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
1431
|
+
},
|
1432
|
+
|
1433
|
+
/** Reorders a child according to a new z value. <br/>
|
1434
|
+
* The child MUST be already added.
|
1435
|
+
* @function
|
1436
|
+
* @param {cc.Node} child An already added child node. It MUST be already added.
|
1437
|
+
* @param {Number} zOrder Z order for drawing priority. Please refer to setZOrder(int)
|
1438
|
+
*/
|
1439
|
+
reorderChild: function (child, zOrder) {
|
1440
|
+
cc.assert(child, cc._LogInfos.Node_reorderChild);
|
1441
|
+
cc.renderer.childrenOrderDirty = this._reorderChildDirty = true;
|
1442
|
+
child.arrivalOrder = cc.s_globalOrderOfArrival;
|
1443
|
+
cc.s_globalOrderOfArrival++;
|
1444
|
+
child._setLocalZOrder(zOrder);
|
1445
|
+
},
|
1446
|
+
|
1447
|
+
/**
|
1448
|
+
* <p>
|
1449
|
+
* Sorts the children array once before drawing, instead of every time when a child is added or reordered. <br/>
|
1450
|
+
* This approach can improves the performance massively.
|
1451
|
+
* </p>
|
1452
|
+
* @function
|
1453
|
+
* @note Don't call this manually unless a child added needs to be removed in the same frame
|
1454
|
+
*/
|
1455
|
+
sortAllChildren: function () {
|
1456
|
+
if (this._reorderChildDirty) {
|
1457
|
+
var _children = this._children;
|
1458
|
+
|
1459
|
+
// insertion sort
|
1460
|
+
var len = _children.length, i, j, tmp;
|
1461
|
+
for(i=1; i<len; i++){
|
1462
|
+
tmp = _children[i];
|
1463
|
+
j = i - 1;
|
1464
|
+
|
1465
|
+
//continue moving element downwards while zOrder is smaller or when zOrder is the same but mutatedIndex is smaller
|
1466
|
+
while(j >= 0){
|
1467
|
+
if(tmp._localZOrder < _children[j]._localZOrder){
|
1468
|
+
_children[j+1] = _children[j];
|
1469
|
+
}else if(tmp._localZOrder === _children[j]._localZOrder && tmp.arrivalOrder < _children[j].arrivalOrder){
|
1470
|
+
_children[j+1] = _children[j];
|
1471
|
+
}else{
|
1472
|
+
break;
|
1473
|
+
}
|
1474
|
+
j--;
|
1475
|
+
}
|
1476
|
+
_children[j+1] = tmp;
|
1477
|
+
}
|
1478
|
+
|
1479
|
+
//don't need to check children recursively, that's done in visit of each child
|
1480
|
+
this._reorderChildDirty = false;
|
1481
|
+
}
|
1482
|
+
},
|
1483
|
+
|
1484
|
+
/**
|
1485
|
+
* Render function using the canvas 2d context or WebGL context, internal usage only, please do not call this function
|
1486
|
+
* @function
|
1487
|
+
* @param {CanvasRenderingContext2D | WebGLRenderingContext} ctx The render context
|
1488
|
+
*/
|
1489
|
+
draw: function (ctx) {
|
1490
|
+
// override me
|
1491
|
+
// Only use- this function to draw your staff.
|
1492
|
+
// DON'T draw your stuff outside this method
|
1493
|
+
},
|
1494
|
+
|
1495
|
+
// Internal use only, do not call it by yourself,
|
1496
|
+
transformAncestors: function () {
|
1497
|
+
if (this._parent != null) {
|
1498
|
+
this._parent.transformAncestors();
|
1499
|
+
this._parent.transform();
|
1500
|
+
}
|
1501
|
+
},
|
1502
|
+
|
1503
|
+
//scene managment
|
1504
|
+
/**
|
1505
|
+
* <p>
|
1506
|
+
* Event callback that is invoked every time when CCNode enters the 'stage'. <br/>
|
1507
|
+
* If the CCNode enters the 'stage' with a transition, this event is called when the transition starts. <br/>
|
1508
|
+
* During onEnter you can't access a "sister/brother" node. <br/>
|
1509
|
+
* If you override onEnter, you must call its parent's onEnter function with this._super().
|
1510
|
+
* </p>
|
1511
|
+
* @function
|
1512
|
+
*/
|
1513
|
+
onEnter: function () {
|
1514
|
+
this._isTransitionFinished = false;
|
1515
|
+
this._running = true;//should be running before resumeSchedule
|
1516
|
+
this._arrayMakeObjectsPerformSelector(this._children, cc.Node._stateCallbackType.onEnter);
|
1517
|
+
this.resume();
|
1518
|
+
},
|
1519
|
+
|
1520
|
+
/**
|
1521
|
+
* <p>
|
1522
|
+
* Event callback that is invoked when the CCNode enters in the 'stage'. <br/>
|
1523
|
+
* If the CCNode enters the 'stage' with a transition, this event is called when the transition finishes. <br/>
|
1524
|
+
* If you override onEnterTransitionDidFinish, you shall call its parent's onEnterTransitionDidFinish with this._super()
|
1525
|
+
* </p>
|
1526
|
+
* @function
|
1527
|
+
*/
|
1528
|
+
onEnterTransitionDidFinish: function () {
|
1529
|
+
this._isTransitionFinished = true;
|
1530
|
+
this._arrayMakeObjectsPerformSelector(this._children, cc.Node._stateCallbackType.onEnterTransitionDidFinish);
|
1531
|
+
},
|
1532
|
+
|
1533
|
+
/**
|
1534
|
+
* <p>callback that is called every time the cc.Node leaves the 'stage'. <br/>
|
1535
|
+
* If the cc.Node leaves the 'stage' with a transition, this callback is called when the transition starts. <br/>
|
1536
|
+
* If you override onExitTransitionDidStart, you shall call its parent's onExitTransitionDidStart with this._super()</p>
|
1537
|
+
* @function
|
1538
|
+
*/
|
1539
|
+
onExitTransitionDidStart: function () {
|
1540
|
+
this._arrayMakeObjectsPerformSelector(this._children, cc.Node._stateCallbackType.onExitTransitionDidStart);
|
1541
|
+
},
|
1542
|
+
|
1543
|
+
/**
|
1544
|
+
* <p>
|
1545
|
+
* callback that is called every time the cc.Node leaves the 'stage'. <br/>
|
1546
|
+
* If the cc.Node leaves the 'stage' with a transition, this callback is called when the transition finishes. <br/>
|
1547
|
+
* During onExit you can't access a sibling node. <br/>
|
1548
|
+
* If you override onExit, you shall call its parent's onExit with this._super().
|
1549
|
+
* </p>
|
1550
|
+
* @function
|
1551
|
+
*/
|
1552
|
+
onExit: function () {
|
1553
|
+
this._running = false;
|
1554
|
+
this.pause();
|
1555
|
+
this._arrayMakeObjectsPerformSelector(this._children, cc.Node._stateCallbackType.onExit);
|
1556
|
+
this.removeAllComponents();
|
1557
|
+
},
|
1558
|
+
|
1559
|
+
// actions
|
1560
|
+
/**
|
1561
|
+
* Executes an action, and returns the action that is executed.<br/>
|
1562
|
+
* The node becomes the action's target. Refer to cc.Action's getTarget()
|
1563
|
+
* @function
|
1564
|
+
* @warning Starting from v0.8 actions don't retain their target anymore.
|
1565
|
+
* @param {cc.Action} action
|
1566
|
+
* @return {cc.Action} An Action pointer
|
1567
|
+
*/
|
1568
|
+
runAction: function (action) {
|
1569
|
+
cc.assert(action, cc._LogInfos.Node_runAction);
|
1570
|
+
|
1571
|
+
this.actionManager.addAction(action, this, !this._running);
|
1572
|
+
return action;
|
1573
|
+
},
|
1574
|
+
|
1575
|
+
/**
|
1576
|
+
* Stops and removes all actions from the running action list .
|
1577
|
+
* @function
|
1578
|
+
*/
|
1579
|
+
stopAllActions: function () {
|
1580
|
+
this.actionManager && this.actionManager.removeAllActionsFromTarget(this);
|
1581
|
+
},
|
1582
|
+
|
1583
|
+
/**
|
1584
|
+
* Stops and removes an action from the running action list.
|
1585
|
+
* @function
|
1586
|
+
* @param {cc.Action} action An action object to be removed.
|
1587
|
+
*/
|
1588
|
+
stopAction: function (action) {
|
1589
|
+
this.actionManager.removeAction(action);
|
1590
|
+
},
|
1591
|
+
|
1592
|
+
/**
|
1593
|
+
* Removes an action from the running action list by its tag.
|
1594
|
+
* @function
|
1595
|
+
* @param {Number} tag A tag that indicates the action to be removed.
|
1596
|
+
*/
|
1597
|
+
stopActionByTag: function (tag) {
|
1598
|
+
if (tag === cc.ACTION_TAG_INVALID) {
|
1599
|
+
cc.log(cc._LogInfos.Node_stopActionByTag);
|
1600
|
+
return;
|
1601
|
+
}
|
1602
|
+
this.actionManager.removeActionByTag(tag, this);
|
1603
|
+
},
|
1604
|
+
|
1605
|
+
/**
|
1606
|
+
* Returns an action from the running action list by its tag.
|
1607
|
+
* @function
|
1608
|
+
* @see cc.Node#getTag and cc.Node#setTag
|
1609
|
+
* @param {Number} tag
|
1610
|
+
* @return {cc.Action} The action object with the given tag.
|
1611
|
+
*/
|
1612
|
+
getActionByTag: function (tag) {
|
1613
|
+
if (tag === cc.ACTION_TAG_INVALID) {
|
1614
|
+
cc.log(cc._LogInfos.Node_getActionByTag);
|
1615
|
+
return null;
|
1616
|
+
}
|
1617
|
+
return this.actionManager.getActionByTag(tag, this);
|
1618
|
+
},
|
1619
|
+
|
1620
|
+
/** <p>Returns the numbers of actions that are running plus the ones that are schedule to run (actions in actionsToAdd and actions arrays).<br/>
|
1621
|
+
* Composable actions are counted as 1 action. Example:<br/>
|
1622
|
+
* If you are running 1 Sequence of 7 actions, it will return 1. <br/>
|
1623
|
+
* If you are running 7 Sequences of 2 actions, it will return 7.</p>
|
1624
|
+
* @function
|
1625
|
+
* @return {Number} The number of actions that are running plus the ones that are schedule to run
|
1626
|
+
*/
|
1627
|
+
getNumberOfRunningActions: function () {
|
1628
|
+
return this.actionManager.numberOfRunningActionsInTarget(this);
|
1629
|
+
},
|
1630
|
+
|
1631
|
+
// cc.Node - Callbacks
|
1632
|
+
// timers
|
1633
|
+
/**
|
1634
|
+
* <p>schedules the "update" method. <br/>
|
1635
|
+
* It will use the order number 0. This method will be called every frame. <br/>
|
1636
|
+
* Scheduled methods with a lower order value will be called before the ones that have a higher order value.<br/>
|
1637
|
+
* Only one "update" method could be scheduled per node.</p>
|
1638
|
+
* @function
|
1639
|
+
*/
|
1640
|
+
scheduleUpdate: function () {
|
1641
|
+
this.scheduleUpdateWithPriority(0);
|
1642
|
+
},
|
1643
|
+
|
1644
|
+
/**
|
1645
|
+
* <p>
|
1646
|
+
* schedules the "update" callback function with a custom priority.
|
1647
|
+
* This callback function will be called every frame.<br/>
|
1648
|
+
* Scheduled callback functions with a lower priority will be called before the ones that have a higher value.<br/>
|
1649
|
+
* Only one "update" callback function could be scheduled per node (You can't have 2 'update' callback functions).<br/>
|
1650
|
+
* </p>
|
1651
|
+
* @function
|
1652
|
+
* @param {Number} priority
|
1653
|
+
*/
|
1654
|
+
scheduleUpdateWithPriority: function (priority) {
|
1655
|
+
this.scheduler.scheduleUpdateForTarget(this, priority, !this._running);
|
1656
|
+
},
|
1657
|
+
|
1658
|
+
/**
|
1659
|
+
* Unschedules the "update" method.
|
1660
|
+
* @function
|
1661
|
+
* @see cc.Node#scheduleUpdate
|
1662
|
+
*/
|
1663
|
+
unscheduleUpdate: function () {
|
1664
|
+
this.scheduler.unscheduleUpdateForTarget(this);
|
1665
|
+
},
|
1666
|
+
|
1667
|
+
/**
|
1668
|
+
* <p>Schedules a custom selector. <br/>
|
1669
|
+
* If the selector is already scheduled, then the interval parameter will be updated without scheduling it again.</p>
|
1670
|
+
* @function
|
1671
|
+
* @param {function} callback_fn A function wrapped as a selector
|
1672
|
+
* @param {Number} interval Tick interval in seconds. 0 means tick every frame. If interval = 0, it's recommended to use scheduleUpdate() instead.
|
1673
|
+
* @param {Number} repeat The selector will be executed (repeat + 1) times, you can use kCCRepeatForever for tick infinitely.
|
1674
|
+
* @param {Number} delay The amount of time that the first tick will wait before execution.
|
1675
|
+
*/
|
1676
|
+
schedule: function (callback_fn, interval, repeat, delay) {
|
1677
|
+
interval = interval || 0;
|
1678
|
+
|
1679
|
+
cc.assert(callback_fn, cc._LogInfos.Node_schedule);
|
1680
|
+
cc.assert(interval >= 0, cc._LogInfos.Node_schedule_2);
|
1681
|
+
|
1682
|
+
repeat = (repeat == null) ? cc.REPEAT_FOREVER : repeat;
|
1683
|
+
delay = delay || 0;
|
1684
|
+
|
1685
|
+
this.scheduler.scheduleCallbackForTarget(this, callback_fn, interval, repeat, delay, !this._running);
|
1686
|
+
},
|
1687
|
+
|
1688
|
+
/**
|
1689
|
+
* Schedules a callback function that runs only once, with a delay of 0 or larger
|
1690
|
+
* @function
|
1691
|
+
* @see cc.Node#schedule
|
1692
|
+
* @param {function} callback_fn A function wrapped as a selector
|
1693
|
+
* @param {Number} delay The amount of time that the first tick will wait before execution.
|
1694
|
+
*/
|
1695
|
+
scheduleOnce: function (callback_fn, delay) {
|
1696
|
+
this.schedule(callback_fn, 0.0, 0, delay);
|
1697
|
+
},
|
1698
|
+
|
1699
|
+
/**
|
1700
|
+
* unschedules a custom callback function.
|
1701
|
+
* @function
|
1702
|
+
* @see cc.Node#schedule
|
1703
|
+
* @param {function} callback_fn A function wrapped as a selector
|
1704
|
+
*/
|
1705
|
+
unschedule: function (callback_fn) {
|
1706
|
+
if (!callback_fn)
|
1707
|
+
return;
|
1708
|
+
|
1709
|
+
this.scheduler.unscheduleCallbackForTarget(this, callback_fn);
|
1710
|
+
},
|
1711
|
+
|
1712
|
+
/**
|
1713
|
+
* <p>unschedule all scheduled callback functions: custom callback functions, and the 'update' callback function.<br/>
|
1714
|
+
* Actions are not affected by this method.</p>
|
1715
|
+
* @function
|
1716
|
+
*/
|
1717
|
+
unscheduleAllCallbacks: function () {
|
1718
|
+
this.scheduler.unscheduleAllCallbacksForTarget(this);
|
1719
|
+
},
|
1720
|
+
|
1721
|
+
/**
|
1722
|
+
* Resumes all scheduled selectors and actions.<br/>
|
1723
|
+
* This method is called internally by onEnter
|
1724
|
+
* @function
|
1725
|
+
* @deprecated since v3.0, please use resume() instead
|
1726
|
+
*/
|
1727
|
+
resumeSchedulerAndActions: function () {
|
1728
|
+
cc.log(cc._LogInfos.Node_resumeSchedulerAndActions);
|
1729
|
+
this.resume();
|
1730
|
+
},
|
1731
|
+
|
1732
|
+
/**
|
1733
|
+
* <p>Resumes all scheduled selectors and actions.<br/>
|
1734
|
+
* This method is called internally by onEnter</p>
|
1735
|
+
*/
|
1736
|
+
resume: function () {
|
1737
|
+
this.scheduler.resumeTarget(this);
|
1738
|
+
this.actionManager && this.actionManager.resumeTarget(this);
|
1739
|
+
cc.eventManager.resumeTarget(this);
|
1740
|
+
},
|
1741
|
+
|
1742
|
+
/**
|
1743
|
+
* <p>Pauses all scheduled selectors and actions.<br/>
|
1744
|
+
* This method is called internally by onExit</p>
|
1745
|
+
* @deprecated since v3.0, please use pause instead
|
1746
|
+
* @function
|
1747
|
+
*/
|
1748
|
+
pauseSchedulerAndActions: function () {
|
1749
|
+
cc.log(cc._LogInfos.Node_pauseSchedulerAndActions);
|
1750
|
+
this.pause();
|
1751
|
+
},
|
1752
|
+
|
1753
|
+
/**
|
1754
|
+
* <p>Pauses all scheduled selectors and actions.<br/>
|
1755
|
+
* This method is called internally by onExit</p>
|
1756
|
+
* @function
|
1757
|
+
*/
|
1758
|
+
pause: function () {
|
1759
|
+
this.scheduler.pauseTarget(this);
|
1760
|
+
this.actionManager && this.actionManager.pauseTarget(this);
|
1761
|
+
cc.eventManager.pauseTarget(this);
|
1762
|
+
},
|
1763
|
+
|
1764
|
+
/**
|
1765
|
+
*<p>Sets the additional transform.<br/>
|
1766
|
+
* The additional transform will be concatenated at the end of getNodeToParentTransform.<br/>
|
1767
|
+
* It could be used to simulate `parent-child` relationship between two nodes (e.g. one is in BatchNode, another isn't).<br/>
|
1768
|
+
* </p>
|
1769
|
+
* @function
|
1770
|
+
* @param {cc.AffineTransform} additionalTransform The additional transform
|
1771
|
+
* @example
|
1772
|
+
* // create a batchNode
|
1773
|
+
* var batch = new cc.SpriteBatchNode("Icon-114.png");
|
1774
|
+
* this.addChild(batch);
|
1775
|
+
*
|
1776
|
+
* // create two sprites, spriteA will be added to batchNode, they are using different textures.
|
1777
|
+
* var spriteA = new cc.Sprite(batch->getTexture());
|
1778
|
+
* var spriteB = new cc.Sprite("Icon-72.png");
|
1779
|
+
*
|
1780
|
+
* batch.addChild(spriteA);
|
1781
|
+
*
|
1782
|
+
* // We can't make spriteB as spriteA's child since they use different textures. So just add it to layer.
|
1783
|
+
* // But we want to simulate `parent-child` relationship for these two node.
|
1784
|
+
* this.addChild(spriteB);
|
1785
|
+
*
|
1786
|
+
* //position
|
1787
|
+
* spriteA.setPosition(ccp(200, 200));
|
1788
|
+
*
|
1789
|
+
* // Gets the spriteA's transform.
|
1790
|
+
* var t = spriteA.getNodeToParentTransform();
|
1791
|
+
*
|
1792
|
+
* // Sets the additional transform to spriteB, spriteB's position will based on its pseudo parent i.e. spriteA.
|
1793
|
+
* spriteB.setAdditionalTransform(t);
|
1794
|
+
*
|
1795
|
+
* //scale
|
1796
|
+
* spriteA.setScale(2);
|
1797
|
+
*
|
1798
|
+
* // Gets the spriteA's transform.
|
1799
|
+
* t = spriteA.getNodeToParentTransform();
|
1800
|
+
*
|
1801
|
+
* // Sets the additional transform to spriteB, spriteB's scale will based on its pseudo parent i.e. spriteA.
|
1802
|
+
* spriteB.setAdditionalTransform(t);
|
1803
|
+
*
|
1804
|
+
* //rotation
|
1805
|
+
* spriteA.setRotation(20);
|
1806
|
+
*
|
1807
|
+
* // Gets the spriteA's transform.
|
1808
|
+
* t = spriteA.getNodeToParentTransform();
|
1809
|
+
*
|
1810
|
+
* // Sets the additional transform to spriteB, spriteB's rotation will based on its pseudo parent i.e. spriteA.
|
1811
|
+
* spriteB.setAdditionalTransform(t);
|
1812
|
+
*/
|
1813
|
+
setAdditionalTransform: function (additionalTransform) {
|
1814
|
+
this._additionalTransform = additionalTransform;
|
1815
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.transformDirty);
|
1816
|
+
this._additionalTransformDirty = true;
|
1817
|
+
},
|
1818
|
+
|
1819
|
+
/**
|
1820
|
+
* Returns the matrix that transform parent's space coordinates to the node's (local) space coordinates.<br/>
|
1821
|
+
* The matrix is in Pixels.
|
1822
|
+
* @function
|
1823
|
+
* @return {cc.AffineTransform}
|
1824
|
+
*/
|
1825
|
+
getParentToNodeTransform: function () {
|
1826
|
+
this._renderCmd.getParentToNodeTransform();
|
1827
|
+
},
|
1828
|
+
|
1829
|
+
/**
|
1830
|
+
* @function
|
1831
|
+
* @deprecated since v3.0, please use getParentToNodeTransform instead
|
1832
|
+
*/
|
1833
|
+
parentToNodeTransform: function () {
|
1834
|
+
return this.getParentToNodeTransform();
|
1835
|
+
},
|
1836
|
+
|
1837
|
+
/**
|
1838
|
+
* Returns the world affine transform matrix. The matrix is in Pixels.
|
1839
|
+
* @function
|
1840
|
+
* @return {cc.AffineTransform}
|
1841
|
+
*/
|
1842
|
+
getNodeToWorldTransform: function () {
|
1843
|
+
//TODO renderCmd has a WorldTransform
|
1844
|
+
var t = this.getNodeToParentTransform();
|
1845
|
+
for (var p = this._parent; p != null; p = p.parent)
|
1846
|
+
t = cc.affineTransformConcat(t, p.getNodeToParentTransform());
|
1847
|
+
return t;
|
1848
|
+
},
|
1849
|
+
|
1850
|
+
/**
|
1851
|
+
* @function
|
1852
|
+
* @deprecated since v3.0, please use getNodeToWorldTransform instead
|
1853
|
+
*/
|
1854
|
+
nodeToWorldTransform: function(){
|
1855
|
+
return this.getNodeToWorldTransform();
|
1856
|
+
},
|
1857
|
+
|
1858
|
+
/**
|
1859
|
+
* Returns the inverse world affine transform matrix. The matrix is in Pixels.
|
1860
|
+
* @function
|
1861
|
+
* @return {cc.AffineTransform}
|
1862
|
+
*/
|
1863
|
+
getWorldToNodeTransform: function () {
|
1864
|
+
return cc.affineTransformInvert(this.getNodeToWorldTransform());
|
1865
|
+
},
|
1866
|
+
|
1867
|
+
/**
|
1868
|
+
* @function
|
1869
|
+
* @deprecated since v3.0, please use getWorldToNodeTransform instead
|
1870
|
+
*/
|
1871
|
+
worldToNodeTransform: function () {
|
1872
|
+
return this.getWorldToNodeTransform();
|
1873
|
+
},
|
1874
|
+
|
1875
|
+
/**
|
1876
|
+
* Converts a Point to node (local) space coordinates. The result is in Points.
|
1877
|
+
* @function
|
1878
|
+
* @param {cc.Point} worldPoint
|
1879
|
+
* @return {cc.Point}
|
1880
|
+
*/
|
1881
|
+
convertToNodeSpace: function (worldPoint) {
|
1882
|
+
return cc.pointApplyAffineTransform(worldPoint, this.getWorldToNodeTransform());
|
1883
|
+
},
|
1884
|
+
|
1885
|
+
/**
|
1886
|
+
* Converts a Point to world space coordinates. The result is in Points.
|
1887
|
+
* @function
|
1888
|
+
* @param {cc.Point} nodePoint
|
1889
|
+
* @return {cc.Point}
|
1890
|
+
*/
|
1891
|
+
convertToWorldSpace: function (nodePoint) {
|
1892
|
+
nodePoint = nodePoint || cc.p(0,0);
|
1893
|
+
return cc.pointApplyAffineTransform(nodePoint, this.getNodeToWorldTransform());
|
1894
|
+
},
|
1895
|
+
|
1896
|
+
/**
|
1897
|
+
* Converts a Point to node (local) space coordinates. The result is in Points.<br/>
|
1898
|
+
* treating the returned/received node point as anchor relative.
|
1899
|
+
* @function
|
1900
|
+
* @param {cc.Point} worldPoint
|
1901
|
+
* @return {cc.Point}
|
1902
|
+
*/
|
1903
|
+
convertToNodeSpaceAR: function (worldPoint) {
|
1904
|
+
return cc.pSub(this.convertToNodeSpace(worldPoint), this._renderCmd.getAnchorPointInPoints());
|
1905
|
+
},
|
1906
|
+
|
1907
|
+
/**
|
1908
|
+
* Converts a local Point to world space coordinates.The result is in Points.<br/>
|
1909
|
+
* treating the returned/received node point as anchor relative.
|
1910
|
+
* @function
|
1911
|
+
* @param {cc.Point} nodePoint
|
1912
|
+
* @return {cc.Point}
|
1913
|
+
*/
|
1914
|
+
convertToWorldSpaceAR: function (nodePoint) {
|
1915
|
+
nodePoint = nodePoint || cc.p(0,0);
|
1916
|
+
var pt = cc.pAdd(nodePoint, this._renderCmd.getAnchorPointInPoints());
|
1917
|
+
return this.convertToWorldSpace(pt);
|
1918
|
+
},
|
1919
|
+
|
1920
|
+
_convertToWindowSpace: function (nodePoint) {
|
1921
|
+
var worldPoint = this.convertToWorldSpace(nodePoint);
|
1922
|
+
return cc.director.convertToUI(worldPoint);
|
1923
|
+
},
|
1924
|
+
|
1925
|
+
/** convenience methods which take a cc.Touch instead of cc.Point
|
1926
|
+
* @function
|
1927
|
+
* @param {cc.Touch} touch The touch object
|
1928
|
+
* @return {cc.Point}
|
1929
|
+
*/
|
1930
|
+
convertTouchToNodeSpace: function (touch) {
|
1931
|
+
var point = touch.getLocation();
|
1932
|
+
return this.convertToNodeSpace(point);
|
1933
|
+
},
|
1934
|
+
|
1935
|
+
/**
|
1936
|
+
* converts a cc.Touch (world coordinates) into a local coordinate. This method is AR (Anchor Relative).
|
1937
|
+
* @function
|
1938
|
+
* @param {cc.Touch} touch The touch object
|
1939
|
+
* @return {cc.Point}
|
1940
|
+
*/
|
1941
|
+
convertTouchToNodeSpaceAR: function (touch) {
|
1942
|
+
var point = cc.director.convertToGL(touch.getLocation());
|
1943
|
+
return this.convertToNodeSpaceAR(point);
|
1944
|
+
},
|
1945
|
+
|
1946
|
+
/**
|
1947
|
+
* Update will be called automatically every frame if "scheduleUpdate" is called when the node is "live".<br/>
|
1948
|
+
* The default behavior is to invoke the visit function of node's componentContainer.<br/>
|
1949
|
+
* Override me to implement your own update logic.
|
1950
|
+
* @function
|
1951
|
+
* @param {Number} dt Delta time since last update
|
1952
|
+
*/
|
1953
|
+
update: function (dt) {
|
1954
|
+
if (this._componentContainer && !this._componentContainer.isEmpty())
|
1955
|
+
this._componentContainer.visit(dt);
|
1956
|
+
},
|
1957
|
+
|
1958
|
+
/**
|
1959
|
+
* <p>
|
1960
|
+
* Calls children's updateTransform() method recursively. <br/>
|
1961
|
+
* <br/>
|
1962
|
+
* This method is moved from CCSprite, so it's no longer specific to CCSprite. <br/>
|
1963
|
+
* As the result, you apply CCSpriteBatchNode's optimization on your customed CCNode. <br/>
|
1964
|
+
* e.g., batchNode->addChild(myCustomNode), while you can only addChild(sprite) before.
|
1965
|
+
* </p>
|
1966
|
+
* @function
|
1967
|
+
*/
|
1968
|
+
updateTransform: function () {
|
1969
|
+
// Recursively iterate over children
|
1970
|
+
this._arrayMakeObjectsPerformSelector(this._children, cc.Node._stateCallbackType.updateTransform);
|
1971
|
+
},
|
1972
|
+
|
1973
|
+
/**
|
1974
|
+
* <p>Currently JavaScript Bindings (JSB), in some cases, needs to use retain and release. This is a bug in JSB,
|
1975
|
+
* and the ugly workaround is to use retain/release. So, these 2 methods were added to be compatible with JSB.
|
1976
|
+
* This is a hack, and should be removed once JSB fixes the retain/release bug<br/>
|
1977
|
+
* You will need to retain an object if you created an engine object and haven't added it into the scene graph during the same frame.<br/>
|
1978
|
+
* Otherwise, JSB's native autorelease pool will consider this object a useless one and release it directly,<br/>
|
1979
|
+
* when you want to use it later, a "Invalid Native Object" error will be raised.<br/>
|
1980
|
+
* The retain function can increase a reference count for the native object to avoid it being released,<br/>
|
1981
|
+
* you need to manually invoke release function when you think this object is no longer needed, otherwise, there will be memory learks.<br/>
|
1982
|
+
* retain and release function call should be paired in developer's game code.</p>
|
1983
|
+
* @function
|
1984
|
+
* @see cc.Node#release
|
1985
|
+
*/
|
1986
|
+
retain: function () {
|
1987
|
+
},
|
1988
|
+
/**
|
1989
|
+
* <p>Currently JavaScript Bindings (JSB), in some cases, needs to use retain and release. This is a bug in JSB,
|
1990
|
+
* and the ugly workaround is to use retain/release. So, these 2 methods were added to be compatible with JSB.
|
1991
|
+
* This is a hack, and should be removed once JSB fixes the retain/release bug<br/>
|
1992
|
+
* You will need to retain an object if you created an engine object and haven't added it into the scene graph during the same frame.<br/>
|
1993
|
+
* Otherwise, JSB's native autorelease pool will consider this object a useless one and release it directly,<br/>
|
1994
|
+
* when you want to use it later, a "Invalid Native Object" error will be raised.<br/>
|
1995
|
+
* The retain function can increase a reference count for the native object to avoid it being released,<br/>
|
1996
|
+
* you need to manually invoke release function when you think this object is no longer needed, otherwise, there will be memory learks.<br/>
|
1997
|
+
* retain and release function call should be paired in developer's game code.</p>
|
1998
|
+
* @function
|
1999
|
+
* @see cc.Node#retain
|
2000
|
+
*/
|
2001
|
+
release: function () {
|
2002
|
+
},
|
2003
|
+
|
2004
|
+
/**
|
2005
|
+
* Returns a component identified by the name given.
|
2006
|
+
* @function
|
2007
|
+
* @param {String} name The name to search for
|
2008
|
+
* @return {cc.Component} The component found
|
2009
|
+
*/
|
2010
|
+
getComponent: function (name) {
|
2011
|
+
if(this._componentContainer)
|
2012
|
+
return this._componentContainer.getComponent(name);
|
2013
|
+
return null;
|
2014
|
+
},
|
2015
|
+
|
2016
|
+
/**
|
2017
|
+
* Adds a component to the node's component container.
|
2018
|
+
* @function
|
2019
|
+
* @param {cc.Component} component
|
2020
|
+
*/
|
2021
|
+
addComponent: function (component) {
|
2022
|
+
if(this._componentContainer)
|
2023
|
+
this._componentContainer.add(component);
|
2024
|
+
},
|
2025
|
+
|
2026
|
+
/**
|
2027
|
+
* Removes a component identified by the given name or removes the component object given
|
2028
|
+
* @function
|
2029
|
+
* @param {String|cc.Component} component
|
2030
|
+
*/
|
2031
|
+
removeComponent: function (component) {
|
2032
|
+
if(this._componentContainer)
|
2033
|
+
return this._componentContainer.remove(component);
|
2034
|
+
return false;
|
2035
|
+
},
|
2036
|
+
|
2037
|
+
/**
|
2038
|
+
* Removes all components of cc.Node, it called when cc.Node is exiting from stage.
|
2039
|
+
* @function
|
2040
|
+
*/
|
2041
|
+
removeAllComponents: function () {
|
2042
|
+
if(this._componentContainer)
|
2043
|
+
this._componentContainer.removeAll();
|
2044
|
+
},
|
2045
|
+
|
2046
|
+
grid: null,
|
2047
|
+
|
2048
|
+
/**
|
2049
|
+
* Recursive method that visit its children and draw them
|
2050
|
+
* @function
|
2051
|
+
* @param {cc.Node.RenderCmd} parentCmd
|
2052
|
+
*/
|
2053
|
+
visit: function(parentCmd){
|
2054
|
+
this._renderCmd.visit(parentCmd);
|
2055
|
+
},
|
2056
|
+
|
2057
|
+
/**
|
2058
|
+
* Performs view-matrix transformation based on position, scale, rotation and other attributes.
|
2059
|
+
* @function
|
2060
|
+
* @param {cc.Node.RenderCmd} parentCmd parent's render command
|
2061
|
+
* @param {boolean} recursive whether call its children's transform
|
2062
|
+
*/
|
2063
|
+
transform: function(parentCmd, recursive){
|
2064
|
+
this._renderCmd.transform(parentCmd, recursive);
|
2065
|
+
},
|
2066
|
+
|
2067
|
+
/**
|
2068
|
+
* <p>Returns the matrix that transform the node's (local) space coordinates into the parent's space coordinates.<br/>
|
2069
|
+
* The matrix is in Pixels.</p>
|
2070
|
+
* @function
|
2071
|
+
* @return {cc.AffineTransform}
|
2072
|
+
* @deprecated since v3.0, please use getNodeToParentTransform instead
|
2073
|
+
*/
|
2074
|
+
nodeToParentTransform: function(){
|
2075
|
+
return this.getNodeToParentTransform();
|
2076
|
+
},
|
2077
|
+
|
2078
|
+
/**
|
2079
|
+
* Returns the matrix that transform the node's (local) space coordinates into the parent's space coordinates.<br/>
|
2080
|
+
* The matrix is in Pixels.
|
2081
|
+
* @function
|
2082
|
+
* @return {cc.AffineTransform} The affine transform object
|
2083
|
+
*/
|
2084
|
+
getNodeToParentTransform: function(){
|
2085
|
+
return this._renderCmd.getNodeToParentTransform();
|
2086
|
+
},
|
2087
|
+
|
2088
|
+
/**
|
2089
|
+
* Returns a camera object that lets you move the node using a gluLookAt
|
2090
|
+
* @function
|
2091
|
+
* @return {cc.Camera} A CCCamera object that lets you move the node using a gluLookAt
|
2092
|
+
* @deprecated since v3.0, no alternative function
|
2093
|
+
* @example
|
2094
|
+
* var camera = node.getCamera();
|
2095
|
+
* camera.setEye(0, 0, 415/2);
|
2096
|
+
* camera.setCenter(0, 0, 0);
|
2097
|
+
*/
|
2098
|
+
getCamera: function () {
|
2099
|
+
if (!this._camera)
|
2100
|
+
this._camera = new cc.Camera();
|
2101
|
+
return this._camera;
|
2102
|
+
},
|
2103
|
+
|
2104
|
+
/**
|
2105
|
+
* <p>Returns a grid object that is used when applying effects.<br/>
|
2106
|
+
* This function have been deprecated, please use cc.NodeGrid to run grid actions</p>
|
2107
|
+
* @function
|
2108
|
+
* @return {cc.GridBase} A CCGrid object that is used when applying effects
|
2109
|
+
* @deprecated since v3.0, no alternative function
|
2110
|
+
*/
|
2111
|
+
getGrid: function () {
|
2112
|
+
return this.grid;
|
2113
|
+
},
|
2114
|
+
|
2115
|
+
/**
|
2116
|
+
* <p>Changes a grid object that is used when applying effects<br/>
|
2117
|
+
* This function have been deprecated, please use cc.NodeGrid to run grid actions</p>
|
2118
|
+
* @function
|
2119
|
+
* @param {cc.GridBase} grid A CCGrid object that is used when applying effects
|
2120
|
+
* @deprecated since v3.0, no alternative function
|
2121
|
+
*/
|
2122
|
+
setGrid: function (grid) {
|
2123
|
+
this.grid = grid;
|
2124
|
+
},
|
2125
|
+
|
2126
|
+
/**
|
2127
|
+
* Return the shader program currently used for this node
|
2128
|
+
* @function
|
2129
|
+
* @return {cc.GLProgram} The shader program currently used for this node
|
2130
|
+
*/
|
2131
|
+
getShaderProgram: function () {
|
2132
|
+
return this._renderCmd.getShaderProgram();
|
2133
|
+
},
|
2134
|
+
|
2135
|
+
/**
|
2136
|
+
* <p>
|
2137
|
+
* Sets the shader program for this node
|
2138
|
+
*
|
2139
|
+
* Since v2.0, each rendering node must set its shader program.
|
2140
|
+
* It should be set in initialize phase.
|
2141
|
+
* </p>
|
2142
|
+
* @function
|
2143
|
+
* @param {cc.GLProgram} newShaderProgram The shader program which fetches from CCShaderCache.
|
2144
|
+
* @example
|
2145
|
+
* node.setGLProgram(cc.shaderCache.programForKey(cc.SHADER_POSITION_TEXTURECOLOR));
|
2146
|
+
*/
|
2147
|
+
setShaderProgram: function (newShaderProgram) {
|
2148
|
+
this._renderCmd.setShaderProgram(newShaderProgram);
|
2149
|
+
},
|
2150
|
+
|
2151
|
+
/**
|
2152
|
+
* Returns the state of OpenGL server side.
|
2153
|
+
* @function
|
2154
|
+
* @return {Number} The state of OpenGL server side.
|
2155
|
+
* @deprecated since v3.0, no need anymore
|
2156
|
+
*/
|
2157
|
+
getGLServerState: function () {
|
2158
|
+
return 0;
|
2159
|
+
},
|
2160
|
+
|
2161
|
+
/**
|
2162
|
+
* Sets the state of OpenGL server side.
|
2163
|
+
* @function
|
2164
|
+
* @param {Number} state The state of OpenGL server side.
|
2165
|
+
* @deprecated since v3.0, no need anymore
|
2166
|
+
*/
|
2167
|
+
setGLServerState: function (state) {
|
2168
|
+
},
|
2169
|
+
|
2170
|
+
/**
|
2171
|
+
* Returns a "world" axis aligned bounding box of the node.
|
2172
|
+
* @function
|
2173
|
+
* @return {cc.Rect}
|
2174
|
+
*/
|
2175
|
+
getBoundingBoxToWorld: function () {
|
2176
|
+
var rect = cc.rect(0, 0, this._contentSize.width, this._contentSize.height);
|
2177
|
+
var trans = this.getNodeToWorldTransform();
|
2178
|
+
rect = cc.rectApplyAffineTransform(rect, trans);
|
2179
|
+
|
2180
|
+
//query child's BoundingBox
|
2181
|
+
if (!this._children)
|
2182
|
+
return rect;
|
2183
|
+
|
2184
|
+
var locChildren = this._children;
|
2185
|
+
for (var i = 0; i < locChildren.length; i++) {
|
2186
|
+
var child = locChildren[i];
|
2187
|
+
if (child && child._visible) {
|
2188
|
+
var childRect = child._getBoundingBoxToCurrentNode(trans);
|
2189
|
+
if (childRect)
|
2190
|
+
rect = cc.rectUnion(rect, childRect);
|
2191
|
+
}
|
2192
|
+
}
|
2193
|
+
return rect;
|
2194
|
+
},
|
2195
|
+
|
2196
|
+
_getBoundingBoxToCurrentNode: function (parentTransform) {
|
2197
|
+
var rect = cc.rect(0, 0, this._contentSize.width, this._contentSize.height);
|
2198
|
+
var trans = (parentTransform == null) ? this.getNodeToParentTransform() : cc.affineTransformConcat(this.getNodeToParentTransform(), parentTransform);
|
2199
|
+
rect = cc.rectApplyAffineTransform(rect, trans);
|
2200
|
+
|
2201
|
+
//query child's BoundingBox
|
2202
|
+
if (!this._children)
|
2203
|
+
return rect;
|
2204
|
+
|
2205
|
+
var locChildren = this._children;
|
2206
|
+
for (var i = 0; i < locChildren.length; i++) {
|
2207
|
+
var child = locChildren[i];
|
2208
|
+
if (child && child._visible) {
|
2209
|
+
var childRect = child._getBoundingBoxToCurrentNode(trans);
|
2210
|
+
if (childRect)
|
2211
|
+
rect = cc.rectUnion(rect, childRect);
|
2212
|
+
}
|
2213
|
+
}
|
2214
|
+
return rect;
|
2215
|
+
},
|
2216
|
+
|
2217
|
+
/**
|
2218
|
+
* Returns the opacity of Node
|
2219
|
+
* @function
|
2220
|
+
* @returns {number} opacity
|
2221
|
+
*/
|
2222
|
+
getOpacity: function () {
|
2223
|
+
return this._realOpacity;
|
2224
|
+
},
|
2225
|
+
|
2226
|
+
/**
|
2227
|
+
* Returns the displayed opacity of Node,
|
2228
|
+
* the difference between displayed opacity and opacity is that displayed opacity is calculated based on opacity and parent node's opacity when cascade opacity enabled.
|
2229
|
+
* @function
|
2230
|
+
* @returns {number} displayed opacity
|
2231
|
+
*/
|
2232
|
+
getDisplayedOpacity: function () {
|
2233
|
+
return this._renderCmd.getDisplayedOpacity();
|
2234
|
+
},
|
2235
|
+
|
2236
|
+
/**
|
2237
|
+
* Sets the opacity of Node
|
2238
|
+
* @function
|
2239
|
+
* @param {Number} opacity
|
2240
|
+
*/
|
2241
|
+
setOpacity: function (opacity) {
|
2242
|
+
this._realOpacity = opacity;
|
2243
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.opacityDirty);
|
2244
|
+
},
|
2245
|
+
|
2246
|
+
/**
|
2247
|
+
* Update displayed opacity
|
2248
|
+
* @function
|
2249
|
+
* @param {Number} parentOpacity
|
2250
|
+
*/
|
2251
|
+
updateDisplayedOpacity: function (parentOpacity) {
|
2252
|
+
//TODO this API shouldn't be public.
|
2253
|
+
this._renderCmd._updateDisplayOpacity(parentOpacity);
|
2254
|
+
},
|
2255
|
+
|
2256
|
+
/**
|
2257
|
+
* Returns whether node's opacity value affect its child nodes.
|
2258
|
+
* @function
|
2259
|
+
* @returns {boolean}
|
2260
|
+
*/
|
2261
|
+
isCascadeOpacityEnabled: function () {
|
2262
|
+
return this._cascadeOpacityEnabled;
|
2263
|
+
},
|
2264
|
+
|
2265
|
+
/**
|
2266
|
+
* Enable or disable cascade opacity, if cascade enabled, child nodes' opacity will be the multiplication of parent opacity and its own opacity.
|
2267
|
+
* @function
|
2268
|
+
* @param {boolean} cascadeOpacityEnabled
|
2269
|
+
*/
|
2270
|
+
setCascadeOpacityEnabled: function (cascadeOpacityEnabled) {
|
2271
|
+
if (this._cascadeOpacityEnabled === cascadeOpacityEnabled)
|
2272
|
+
return;
|
2273
|
+
this._cascadeOpacityEnabled = cascadeOpacityEnabled;
|
2274
|
+
this._renderCmd.setCascadeOpacityEnabledDirty();
|
2275
|
+
},
|
2276
|
+
|
2277
|
+
/**
|
2278
|
+
* Returns the color of Node
|
2279
|
+
* @function
|
2280
|
+
* @returns {cc.Color}
|
2281
|
+
*/
|
2282
|
+
getColor: function () {
|
2283
|
+
var locRealColor = this._realColor;
|
2284
|
+
return cc.color(locRealColor.r, locRealColor.g, locRealColor.b, locRealColor.a);
|
2285
|
+
},
|
2286
|
+
|
2287
|
+
/**
|
2288
|
+
* Returns the displayed color of Node,
|
2289
|
+
* the difference between displayed color and color is that displayed color is calculated based on color and parent node's color when cascade color enabled.
|
2290
|
+
* @function
|
2291
|
+
* @returns {cc.Color}
|
2292
|
+
*/
|
2293
|
+
getDisplayedColor: function () {
|
2294
|
+
return this._renderCmd.getDisplayedColor();
|
2295
|
+
},
|
2296
|
+
|
2297
|
+
/**
|
2298
|
+
* <p>Sets the color of Node.<br/>
|
2299
|
+
* When color doesn't include opacity value like cc.color(128,128,128), this function only change the color. <br/>
|
2300
|
+
* When color include opacity like cc.color(128,128,128,100), then this function will change the color and the opacity.</p>
|
2301
|
+
* @function
|
2302
|
+
* @param {cc.Color} color The new color given
|
2303
|
+
*/
|
2304
|
+
setColor: function (color) {
|
2305
|
+
var locRealColor = this._realColor;
|
2306
|
+
locRealColor.r = color.r;
|
2307
|
+
locRealColor.g = color.g;
|
2308
|
+
locRealColor.b = color.b;
|
2309
|
+
this._renderCmd.setDirtyFlag(cc.Node._dirtyFlags.colorDirty);
|
2310
|
+
},
|
2311
|
+
|
2312
|
+
/**
|
2313
|
+
* Update the displayed color of Node
|
2314
|
+
* @function
|
2315
|
+
* @param {cc.Color} parentColor
|
2316
|
+
*/
|
2317
|
+
updateDisplayedColor: function (parentColor) {
|
2318
|
+
//TODO this API shouldn't be public.
|
2319
|
+
this._renderCmd._updateDisplayColor(parentColor);
|
2320
|
+
},
|
2321
|
+
|
2322
|
+
/**
|
2323
|
+
* Returns whether node's color value affect its child nodes.
|
2324
|
+
* @function
|
2325
|
+
* @returns {boolean}
|
2326
|
+
*/
|
2327
|
+
isCascadeColorEnabled: function () {
|
2328
|
+
return this._cascadeColorEnabled;
|
2329
|
+
},
|
2330
|
+
|
2331
|
+
/**
|
2332
|
+
* Enable or disable cascade color, if cascade enabled, child nodes' opacity will be the cascade value of parent color and its own color.
|
2333
|
+
* @param {boolean} cascadeColorEnabled
|
2334
|
+
*/
|
2335
|
+
setCascadeColorEnabled: function (cascadeColorEnabled) {
|
2336
|
+
if (this._cascadeColorEnabled === cascadeColorEnabled)
|
2337
|
+
return;
|
2338
|
+
this._cascadeColorEnabled = cascadeColorEnabled;
|
2339
|
+
this._renderCmd.setCascadeColorEnabledDirty();
|
2340
|
+
},
|
2341
|
+
|
2342
|
+
/**
|
2343
|
+
* Set whether color should be changed with the opacity value,
|
2344
|
+
* useless in cc.Node, but this function is override in some class to have such behavior.
|
2345
|
+
* @function
|
2346
|
+
* @param {Boolean} opacityValue
|
2347
|
+
*/
|
2348
|
+
setOpacityModifyRGB: function (opacityValue) {
|
2349
|
+
},
|
2350
|
+
|
2351
|
+
/**
|
2352
|
+
* Get whether color should be changed with the opacity value
|
2353
|
+
* @function
|
2354
|
+
* @return {Boolean}
|
2355
|
+
*/
|
2356
|
+
isOpacityModifyRGB: function () {
|
2357
|
+
return false;
|
2358
|
+
},
|
2359
|
+
|
2360
|
+
_initRendererCmd: function(){
|
2361
|
+
this._renderCmd = cc.renderer.getRenderCmd(this);
|
2362
|
+
},
|
2363
|
+
|
2364
|
+
_createRenderCmd: function(){
|
2365
|
+
if(cc._renderType === cc._RENDER_TYPE_CANVAS)
|
2366
|
+
return new cc.Node.CanvasRenderCmd(this);
|
2367
|
+
else
|
2368
|
+
return new cc.Node.WebGLRenderCmd(this);
|
2369
|
+
}
|
2370
|
+
});
|
2371
|
+
|
2372
|
+
/**
|
2373
|
+
* Allocates and initializes a node.
|
2374
|
+
* @deprecated since v3.0, please use new construction instead.
|
2375
|
+
* @see cc.Node
|
2376
|
+
* @return {cc.Node}
|
2377
|
+
*/
|
2378
|
+
cc.Node.create = function () {
|
2379
|
+
return new cc.Node();
|
2380
|
+
};
|
2381
|
+
|
2382
|
+
cc.Node._stateCallbackType = {onEnter: 1, onExit: 2, cleanup: 3, onEnterTransitionDidFinish: 4, updateTransform: 5, onExitTransitionDidStart: 6, sortAllChildren: 7};
|
2383
|
+
|
2384
|
+
cc.assert(cc.isFunction(cc._tmp.PrototypeCCNode), cc._LogInfos.MissingFile, "BaseNodesPropertyDefine.js");
|
2385
|
+
cc._tmp.PrototypeCCNode();
|
2386
|
+
delete cc._tmp.PrototypeCCNode;
|