Class CCNode

#include <Geode/cocos/base_nodes/CCNode.h>
classCCNode:publiccocos2d::CCObject{ ... }

CCNode is the main element. Anything that gets drawn or contains things that get drawn is a CCNode. The most popular CCNodes are: CCScene, CCLayer, CCSprite, CCMenu. The main features of a CCNode are:

  • They can contain other CCNode nodes (addChild, getChildByTag, removeChild, etc)
  • They can schedule periodic callback (schedule, unschedule, etc)
  • They can execute actions (runAction, stopAction, etc) Some CCNode nodes provide extra functionality for them or their children. Subclassing a CCNode usually means (one/all) of:
  • overriding init to initialize resources and schedule callbacks
  • create callbacks to handle the advancement of time
  • overriding draw to render the node Features of CCNode:
  • position
  • scale (x, y)
  • rotation (in degrees, clockwise)
  • CCCamera (an interface to gluLookAt )
  • CCGridBase (to do mesh transformations)
  • anchor point
  • size
  • visible
  • z-order
  • openGL z position Default values:
  • rotation: 0
  • position: (x=0,y=0)
  • scale: (x=1,y=1)
  • contentSize: (x=0,y=0)
  • anchorPoint: (x=0,y=0) Limitations:
  • A CCNode is a “void” object. It doesn’t have a texture Order in transformations with grid disabled -# The node will be translated (position) -# The node will be rotated (rotation) -# The node will be scaled (scale) -# The node will be moved according to the camera values (camera) Order in transformations with grid enabled -# The node will be translated (position) -# The node will be rotated (rotation) -# The node will be scaled (scale) -# The grid will capture the screen -# The node will be moved according to the camera values (camera) -# The grid will render the captured screen Camera:
  • Each node has a camera. By default it points to the center of the CCNode.
Examples0
Public static methods1
staticcocos2d::CCNode*create()

Allocates and initializes a node.

Return value
A initialized node which is marked as "autorelease".
Public member functions174
virtualboolinit()

Initializes the instance of CCNode

Return value
Whether the initialization was successful.
charconst*description()

Gets the description string. It makes debugging easier.

Return value
A string terminated with '\0'
virtualvoidsetZOrder(
intzOrder
)

Sets the Z order which stands for the drawing order, and reorder this node in its parent’s children array.

The Z order of node is relative to its “brothers”: children of the same parent. It’s nothing to do with OpenGL’s z vertex. This one only affects the draw order of nodes in cocos2d. The larger number it is, the later this node will be drawn in each message loop. Please refer to setVertexZ(float) for the difference.

Parameters

nZOrder

Z order of this node.
virtualvoid_setZOrder()

Sets the z order which stands for the drawing order

This is an internal method. Don’t call it outside the framework. The difference between setZOrder(int) and _setOrder(int) is:

  • _setZOrder(int) is a pure setter for m_nZOrder memeber variable
  • setZOrder(int) firstly changes m_nZOrder, then recorder this node in its parent’s chilren array.
virtualintgetZOrder()

Gets the Z order of this node.

Return value
The Z order.
virtualvoidsetVertexZ(
floatvertexZ
)

Sets the real OpenGL Z vertex.

Differences between openGL Z vertex and cocos2d Z order:

  • OpenGL Z modifies the Z vertex, and not the Z order in the relation between parent-children
  • OpenGL Z might require to set 2D projection
  • cocos2d Z order works OK if all the nodes uses the same openGL Z vertex. eg: vertexZ = 0
Parameters

fVertexZ

OpenGL Z vertex of this node.

⚠️ Use it at your own risk since it might break the cocos2d parent-children z order

virtualfloatgetVertexZ()

Gets OpenGL Z vertex of this node.

Return value
OpenGL Z vertex of this node
virtualvoidsetScaleX(
floatfScaleX
)

Changes the scale factor on X axis of this node

The deafult value is 1.0 if you haven’t changed it before

Parameters

fScaleX

The scale factor on X axis.
virtualfloatgetScaleX()

Returns the scale factor on X axis of this node

Return value
The scale factor on X axis.
virtualvoidsetScaleY(
floatfScaleY
)

Changes the scale factor on Y axis of this node

The Default value is 1.0 if you haven’t changed it before.

Parameters

fScaleY

The scale factor on Y axis.
virtualfloatgetScaleY()

Returns the scale factor on Y axis of this node

Return value
The scale factor on Y axis.
virtualvoidsetScale(
floatscale
)

Changes both X and Y scale factor of the node.

1.0 is the default scale factor. It modifies the X and Y scale at the same time.

Parameters

scale

The scale factor for both X and Y axis.
virtualfloatgetScale()

Gets the scale factor of the node, when X and Y have the same scale factor.

Return value
The scale factor of the node.

⚠️ Assert when m_fScaleX != m_fScaleY.

virtualvoidsetScale(
floatfScaleX
,
floatfScaleY
)

Changes both X and Y scale factor of the node.

1.0 is the default scale factor. It modifies the X and Y scale at the same time.

Parameters

fScaleX

The scale factor on X axis.

fScaleY

The scale factor on Y axis.
virtualvoidsetPosition()

Changes the position (x,y) of the node in OpenGL coordinates

Usually we use ccp(x,y) to compose CCPoint object. The original point (0,0) is at the left-bottom corner of screen. For example, this codesnip sets the node in the center of screen.

Parameters

position

The position (x,y) of the node in OpenGL coordinates
CCSize size = CCDirector::sharedDirector()->getWinSize();
node->setPosition( ccp(size.width/2, size.height/2) )
virtualcocos2d::CCPointconst&getPosition()

Gets the position (x,y) of the node in OpenGL coordinates

Return value
The position (x,y) of the node in OpenGL coordinates
virtualvoidsetPosition(,)

Sets position in a more efficient way.

Passing two numbers (x,y) is much efficient than passing CCPoint object. This method is binded to lua and javascript. Passing a number is 10 times faster than passing a object from lua to c++

Parameters

x

X coordinate for position

y

Y coordinate for position
// sample code in lua
local pos  = node::getPosition()  -- returns CCPoint object from C++
node:setPosition(x, y)            -- pass x, y coordinate to C++
virtualvoidgetPosition(,)

Gets position in a more efficient way, returns two number instead of a CCPoint object

virtualvoidsetPositionX()

Gets/Sets x or y coordinate individually for position. These methods are used in Lua and Javascript Bindings

virtualfloatgetPositionX()
No description provided
virtualvoidsetPositionY()
No description provided
virtualfloatgetPositionY()
No description provided
virtualvoidsetSkewX(
floatfSkewX
)

Changes the X skew angle of the node in degrees.

This angle describes the shear distortion in the X direction. Thus, it is the angle between the Y axis and the left edge of the shape The default skewX angle is 0. Positive values distort the node in a CW direction.

Parameters

fSkewX

The X skew angle of the node in degrees.
virtualfloatgetSkewX()

Returns the X skew angle of the node in degrees.

Return value
The X skew angle of the node in degrees.
virtualvoidsetSkewY(
floatfSkewY
)

Changes the Y skew angle of the node in degrees.

This angle describes the shear distortion in the Y direction. Thus, it is the angle between the X axis and the bottom edge of the shape The default skewY angle is 0. Positive values distort the node in a CCW direction.

Parameters

fSkewY

The Y skew angle of the node in degrees.
virtualfloatgetSkewY()

Returns the Y skew angle of the node in degrees.

Return value
The Y skew angle of the node in degrees.
virtualvoidsetAnchorPoint()

Sets the anchor point in percent.

anchorPoint is the point around which all transformations and positioning manipulations take place. It’s like a pin in the node where it is “attached” to its parent. The anchorPoint is normalized, like a percentage. (0,0) means the bottom-left corner and (1,1) means the top-right corner. But you can use values higher than (1,1) and lower than (0,0) too. The default anchorPoint is (0.5,0.5), so it starts in the center of the node.

Parameters

anchorPoint

The anchor point of node.
virtualcocos2d::CCPointconst&getAnchorPoint()

Returns the anchor point in percent.

Return value
The anchor point of node.
virtualcocos2d::CCPointconst&getAnchorPointInPoints()

Returns the anchorPoint in absolute pixels.

Return value
The anchor point in absolute pixels.

⚠️ You can only read it. If you wish to modify it, use anchorPoint instead.

virtualvoidsetContentSize()

Sets the untransformed size of the node.

The contentSize remains the same no matter the node is scaled or rotated. All nodes has a size. Layer and Scene has the same size of the screen.

Parameters

contentSize

The untransformed size of the node.
virtualcocos2d::CCSizeconst&getContentSize()const

Returns the untransformed size of the node.

Return value
The untransformed size of the node.
virtualcocos2d::CCSizegetScaledContentSize()
No description provided
virtualvoidsetVisible(
boolvisible
)

Sets whether the node is visible

The default value is true, a node is default to visible

Parameters

visible

true if the node is visible, false if the node is hidden.
virtualboolisVisible()

Determines if the node is visible

Return value
true if the node is visible, false if the node is hidden.
virtualvoidsetRotation(
floatfRotation
)

Sets the rotation (angle) of the node in degrees.

0 is the default rotation angle. Positive values rotate node clockwise, and negative values for anti-clockwise.

Parameters

fRotation

The roration of the node in degrees.
virtualfloatgetRotation()

Returns the rotation of the node in degrees.

Return value
The rotation of the node in degrees.
virtualvoidsetRotationX(
floatfRotaionX
)

Sets the X rotation (angle) of the node in degrees which performs a horizontal rotational skew.

0 is the default rotation angle. Positive values rotate node clockwise, and negative values for anti-clockwise.

Parameters

fRotationX

The X rotation in degrees which performs a horizontal rotational skew.
virtualfloatgetRotationX()

Gets the X rotation (angle) of the node in degrees which performs a horizontal rotation skew.

Return value
The X rotation in degrees.
virtualvoidsetRotationY(
floatfRotationY
)

Sets the Y rotation (angle) of the node in degrees which performs a vertical rotational skew.

0 is the default rotation angle. Positive values rotate node clockwise, and negative values for anti-clockwise.

Parameters

fRotationY

The Y rotation in degrees.
virtualfloatgetRotationY()

Gets the Y rotation (angle) of the node in degrees which performs a vertical rotational skew.

Return value
The Y rotation in degrees.
virtualvoidsetOrderOfArrival(
uintuOrderOfArrival
)

Sets the arrival order when this node has a same ZOrder with other children.

A node which called addChild subsequently will take a larger arrival order, If two children have the same Z order, the child with larger arrival order will be drawn later.

Parameters

uOrderOfArrival

The arrival order.

⚠️ This method is used internally for zOrder sorting, don't change this manually

virtualuintgetOrderOfArrival()

Returns the arrival order, indecates which children is added previously.

Return value
The arrival order.
virtualvoidsetGLServerState()

Sets the state of OpenGL server side.

Parameters

glServerState

The state of OpenGL server side.
virtualcocos2d::ccGLServerStategetGLServerState()

Returns the state of OpenGL server side.

Return value
The state of OpenGL server side.
virtualvoidignoreAnchorPointForPosition(
boolignore
)

Sets whether the anchor point will be (0,0) when you position this node.

This is an internal method, only used by CCLayer and CCScene. Don’t call it outside framework. The default value is false, while in CCLayer and CCScene are true

Parameters

ignore

true if anchor point will be (0,0) when you position this node
virtualboolisIgnoreAnchorPointForPosition()

Gets whether the anchor point will be (0,0) when you position this node.

Return value
true if the anchor point will be (0,0) when you position this node.
virtualvoidaddChild()

Adds a child to the container with z-order as 0.

If the child is added to a ‘running’ node, then ‘onEnter’ and ‘onEnterTransitionDidFinish’ will be called immediately.

Parameters

child

A child node
virtualvoidaddChild(,
intzOrder
)

Adds a child to the container with a z-order

If the child is added to a ‘running’ node, then ‘onEnter’ and ‘onEnterTransitionDidFinish’ will be called immediately.

Parameters

child

A child node

zOrder

Z order for drawing priority. Please refer to setZOrder(int)
virtualvoidaddChild(,
intzOrder
,
inttag
)

Adds a child to the container with z order and tag

If the child is added to a ‘running’ node, then ‘onEnter’ and ‘onEnterTransitionDidFinish’ will be called immediately.

Parameters

child

A child node

zOrder

Z order for drawing priority. Please refer to setZOrder(int)

tag

A interger to identify the node easily. Please refer to setTag(int)
virtualcocos2d::CCNode*getChildByTag(
inttag
)

Gets a child from the container with its tag

Parameters

tag

An identifier to find the child node.
Return value
a CCNode object whose tag equals to the input parameter
virtualcocos2d::CCArray*getChildren()

Return an array of children

Composing a “tree” structure is a very important feature of CCNode

Return value
An array of children
// Here's a sample code of traversing children array:
CCNode* node = NULL;
CCARRAY_FOREACH(parent->getChildren(), node)
{
    node->setPosition(0,0);
}
// This sample code traverses all children nodes, and set theie position to (0,0)
virtualuintgetChildrenCount()const

Get the amount of children.

Return value
The amount of children.
virtualvoidsetParent()

Sets the parent node

Parameters

parent

A pointer to the parnet node
virtualcocos2d::CCNode*getParent()

Returns a pointer to the parent node

Return value
A pointer to the parnet node
virtualvoidremoveFromParent()

Removes this node itself from its parent node with a cleanup. If the node orphan, then nothing happens.

virtualvoidremoveFromParentAndCleanup(
boolcleanup
)

Removes this node itself from its parent node. If the node orphan, then nothing happens.

Parameters

cleanup

true if all actions and callbacks on this node should be removed, false otherwise.
virtualvoidremoveMeAndCleanup()
No description provided
virtualvoidremoveChild()

Removes a child from the container with a cleanup

Parameters

child

The child node which will be removed.
virtualvoidremoveChild(,
boolcleanup
)

Removes a child from the container. It will also cleanup all running actions depending on the cleanup parameter.

Parameters

child

The child node which will be removed.

cleanup

true if all running actions and callbacks on the child node will be cleanup, false otherwise.
virtualvoidremoveChildByTag(
inttag
)

Removes a child from the container by tag value with a cleanup.

Parameters

tag

An interger number that identifies a child node
virtualvoidremoveChildByTag(
inttag
,
boolcleanup
)

Removes a child from the container by tag value. It will also cleanup all running actions depending on the cleanup parameter

Parameters

tag

An interger number that identifies a child node

cleanup

true if all running actions and callbacks on the child node will be cleanup, false otherwise.
virtualvoidremoveAllChildren()

Removes all children from the container with a cleanup.

virtualvoidremoveAllChildrenWithCleanup(
boolcleanup
)

Removes all children from the container, and do a cleanup to all running actions depending on the cleanup parameter.

Parameters

cleanup

true if all running actions on all children nodes should be cleanup, false oterwise.
virtualvoidreorderChild(,
intzOrder
)

Reorders a child according to a new z value.

Parameters

child

An already added child node. It MUST be already added.

zOrder

Z order for drawing priority. Please refer to setZOrder(int)
virtualvoidsortAllChildren()

Sorts the children array once before drawing, instead of every time when a child is added or reordered. This appraoch can improves the performance massively.

ℹ Don't call this manually unless a child added needs to be removed in the same frame

virtualcocos2d::CCGridBase*getGrid()

Returns a grid object that is used when applying effects

Return value
A CCGrid object that is used when applying effects
virtualvoidsetGrid()

Changes a grid object that is used when applying effects

Parameters

A

CCGrid object that is used when applying effects
virtualvoid*getUserData()

Returns a custom user data pointer

You can set everything in UserData pointer, a data block, a structure or an object.

Return value
A custom user data pointer
virtualvoidsetUserData(
void*pUserData
)

Sets a custom user data pointer

You can set everything in UserData pointer, a data block, a structure or an object, etc.

Return value
A custom user data pointer

⚠️ Don't forget to release the memroy manually, especially before you change this data pointer, and before this node is autoreleased.

virtualcocos2d::CCObject*getUserObject()

Returns a user assigned CCObject

Similar to userData, but instead of holding a void* it holds an object

Return value
A user assigned CCObject
virtualvoidsetUserObject()

Returns a user assigned CCObject

Similar to UserData, but instead of holding a void* it holds an object. The UserObject will be retained once in this method, and the previous UserObject (if existed) will be relese. The UserObject will be released in CCNode’s destructure.

Parameters

A

user assigned CCObject

ℹ In Geode, this actually sets the user object with the ID "" (empty string)

voidsetUserObject(,)

Set a user-assigned CCObject with a specific ID. This allows nodes to have multiple user objects. Objects should be prefixed with the mod ID. Assigning a null removes the user object with the ID

ℹ Geode addition

cocos2d::CCObject*getUserObject()

Get a user-assigned CCObject with the specific ID

ℹ Geode addition

voidsetAttribute(,)
No description provided
std::stringgetID()

Get the string ID of this node

Return value
The ID, or an empty string if the node has no ID.

ℹ Geode addition

voidsetID()

Set the string ID of this node. String IDs are a Geode addition that are much safer to use to get nodes than absolute indexes

Parameters

id

The ID of the node, recommended to be in kebab case without any spaces or uppercase letters. If the node is added by a mod, use the _spr literal to append the mod ID to it

ℹ Geode addition

cocos2d::CCNode*getChildByID()

Get a child by its string ID

Parameters

id

ID of the child
Return value
The child, or nullptr if none was found

ℹ Geode addition

cocos2d::CCNode*getChildByIDRecursive()

Get a child by its string ID. Recursively searches all the children

Parameters

id

ID of the child
Return value
The child, or nullptr if none was found

ℹ Geode addition

cocos2d::CCNode*querySelector()

Get a child based on a query. Searches the child tree for a matching child. The query currently only supports the following features:

  • node-id: Match a node with a specific ID
  • node-id-1 node-id-2: Match a descendant (possibly not immediate) child of a node with a specific ID
  • node-id-1 > node-id-2: Match the immediate child of a node with a specific ID For example, the query “my-layer button-menu > mod.id/epic-button” is equivalent to getChildByIDRecursive("my-layer") ->getChildByIDRecursive("button-menu") ->getChildByID("mod.id/epic-button")
Return value
The first matching node, or nullptr if none was found
voidremoveChildByID()

Removes a child from the container by its ID.

Parameters

id

The ID of the node

ℹ Geode addition

voidinsertBefore(,)

Add a child before a specified existing child

Parameters

child

The node to add. The node may not be a child of another node already

before

The child the node is added before of. If this is null or not a child of this node, the new child will be placed at the start of the child list

ℹ Geode addition

voidinsertAfter(,)

Add a child after an specified existing child

Parameters

child

The node to add. The node may not be a child of another node already

after

The child the node is added after of. If this is null or not a child of this node, the new child will be placed at the end of the child list

ℹ Geode addition

boolhasAncestor()

Check if this node’s parent or its parents’ parent is the given node

Parameters

ancestor

The node whose child or subchild this node should be. If nullptr, returns true if the node is in the current scene, otherwise false.
Return value
True if ancestor is an ancestor of this node

ℹ Geode addition

voidsetLayout(,
boolapply
,
boolrespectAnchor
)

Set the Layout for this node. Used to automatically position children, based on the selected layout. In order to apply the layout after a child has been added, call updateLayout

Parameters

layout

Layout to set to this node

apply

Whether to call updateLayout now or not

respectAnchor

If true, if the target node is isIgnoreAnchorPointForPosition, then it is set to false and the children are automatically moved to match where they should be positioned. Visually, this should result in no difference; however, when dealing with CCLayers / CCMenus, this will change where the children are located

ℹ Geode addition

cocos2d::Layout*getLayout()

Get the Layout for this node

Return value
The current layout, or nullptr if no layout is set

ℹ Geode addition

voidupdateLayout(
boolupdateChildOrder
)

Update the layout of this node using the current Layout. If no layout is set, nothing happens

ℹ Geode addition

voidsetLayoutOptions(,
boolapply
)

Set the layout options for this node. Layout options can be used to control how this node is positioned in its parent’s Layout, for example setting the grow size for a flex layout

Parameters

options

The layout options

apply

Whether to update the layout of the parent node

ℹ Geode addition

cocos2d::LayoutOptions*getLayoutOptions()

Get the layout options for this node

Return value
The current layout options, or nullptr if no options are set

ℹ Geode addition

voidaddChildAtPosition(,,,
booluseAnchorLayout
)

Adds a child at an anchored position with an offset. The node is placed in its parent where the anchor specifies, and then the offset is used to relatively adjust the node’s position

Parameters

child

The child to add

anchor

Where the place the child relative to this node

offset

Where to place the child relative to the anchor

useAnchorLayout

If true, sets this node's layout to `AnchorLayout` if no other layout is already specified

ℹ Geode addition

voidaddChildAtPosition(,,,,
booluseAnchorLayout
)

Adds a child at an anchored position with an offset. The node is placed in its parent where the anchor specifies, and then the offset is used to relatively adjust the node’s position

Parameters

child

The child to add

anchor

Where the place the child relative to this node

offset

Where to place the child relative to the anchor

nodeAnchor

The child's anchor position

useAnchorLayout

If true, sets this node's layout to `AnchorLayout` if no other layout is already specified

ℹ Geode addition

voidupdateAnchoredPosition(,)

Updates the anchored position of a child. Requires the child to already have a parent; if the child already has AnchorLayoutOptions set, those are updated, otherwise nothing is done

Parameters

anchor

Where the place the child relative to its parent

offset

Where to place the child relative to the anchor

ℹ Geode addition

voidupdateAnchoredPosition(,,)

Updates the anchored position of a child. Requires the child to already have a parent; if the child already has AnchorLayoutOptions set, those are updated, otherwise nothing is done

Parameters

anchor

Where the place the child relative to its parent

offset

Where to place the child relative to the anchor

nodeAnchor

The child's anchor position

ℹ Geode addition

voidswapChildIndices(,)

Swap two children

Parameters

first

One of the nodes to swap

second

One of the nodes to swap

ℹ Geode addition

voidsetScaledContentSize()
No description provided

ℹ Make sure to set the scale first!

ℹ Geode addition

voidsetContentWidth(
floatwidth
)
No description provided
voidsetContentHeight(
floatwidth
)
No description provided
floatgetContentWidth()const
No description provided
floatgetContentHeight()const
No description provided
floatgetScaledContentWidth()const
No description provided
floatgetScaledContentHeight()const
No description provided
voidremoveEventListener()
No description provided
voidremoveEventListener()
No description provided
geode::EventListenerProtocol*getEventListener()
No description provided
_::size_tgetEventListenerCount()
No description provided
virtualcocos2d::CCGLProgram*getShaderProgram()

///

Return value
The shader program currelty used for this node
virtualvoidsetShaderProgram(
cocos2d::CCGLProgram*pShaderProgram
)

Sets the shader program for this node

Since v2.0, each rendering node must set its shader program. It should be set in initialize phase.

Parameters

The

shader program which fetchs from CCShaderCache.
node->setShaderProgram(CCShaderCache::sharedShaderCache()->programForKey(kCCShader_PositionTextureColor));
virtualcocos2d::CCCamera*getCamera()

Returns a camera object that lets you move the node using a gluLookAt

Return value
A CCCamera object that lets you move the node using a gluLookAt
CCCamera* camera = node->getCamera();
camera->setEyeXYZ(0, 0, 415/2);
camera->setCenterXYZ(0, 0, 0);
virtualboolisRunning()

Returns whether or not the node accepts event callbacks.

Running means the node accept event callbacks like onEnter(), onExit(), update()

Return value
Whether or not the node is running.
virtualvoidregisterScriptHandler(
inthandler
)

Registers a script function that will be called in onEnter() & onExit() seires functions.

This handler will be removed automatically after onExit() called.

Parameters

handler

A number that indicates a lua function.

⚠️ This method is for internal usage, don't call it manually.

-- lua sample
local function sceneEventHandler(eventType)
    if eventType == kCCNodeOnEnter then
        -- do something
    elseif evetType == kCCNodeOnExit then
        -- do something
    end
end
scene::registerScriptHandler(sceneEventHandler)
virtualvoidunregisterScriptHandler()

Unregisters a script function that will be called in onEnter() & onExit() series functions.

intgetScriptHandler()

Gets script handler for onEnter/onExit event. This is an internal method. g

Return value
A number that indicates a lua function.
voidscheduleUpdateWithPriorityLua(
intnHandler
,
intpriority
)

Schedules for lua script.

virtualvoidonEnter()

Event callback that is invoked every time when CCNode enters the ‘stage’. If the CCNode enters the ‘stage’ with a transition, this event is called when the transition starts. During onEnter you can’t access a “sister/brother” node. If you override onEnter, you shall call its parent’s one, e.g., CCNode::onEnter().

virtualvoidonEnterTransitionDidFinish()

Event callback that is invoked when the CCNode enters in the ‘stage’. If the CCNode enters the ‘stage’ with a transition, this event is called when the transition finishes. If you override onEnterTransitionDidFinish, you shall call its parent’s one, e.g. CCNode::onEnterTransitionDidFinish()

virtualvoidonExit()

Event callback that is invoked every time the CCNode leaves the ‘stage’. If the CCNode leaves the ‘stage’ with a transition, this event is called when the transition finishes. During onExit you can’t access a sibling node. If you override onExit, you shall call its parent’s one, e.g., CCNode::onExit().

virtualvoidonExitTransitionDidStart()

Event callback that is called every time the CCNode leaves the ‘stage’. If the CCNode leaves the ‘stage’ with a transition, this callback is called when the transition starts.

virtualvoidcleanup()

Stops all running actions and schedulers

virtualvoiddraw()

Override this method to draw your own node. The following GL states will be enabled by default:

  • glEnableClientState(GL_VERTEX_ARRAY);
  • glEnableClientState(GL_COLOR_ARRAY);
  • glEnableClientState(GL_TEXTURE_COORD_ARRAY);
  • glEnable(GL_TEXTURE_2D); AND YOU SHOULD NOT DISABLE THEM AFTER DRAWING YOUR NODE But if you enable any other GL state, you should disable it after drawing your node.
virtualvoidvisit()

Visits this node’s children and draw them recursively.

cocos2d::CCRectboundingBox()

Returns a “local” axis aligned bounding box of the node. The returned box is relative only to its parent.

Return value
A "local" axis aligned boudning box of the node.

ℹ This method returns a temporaty variable, so it can't returns const CCRect&

virtualvoidsetActionManager()

Sets the CCActionManager object that is used by all actions.

Parameters

actionManager

A CCActionManager object that is used by all actions.

⚠️ If you set a new CCActionManager, then previously created actions will be removed.

virtualcocos2d::CCActionManager*getActionManager()

Gets the CCActionManager object that is used by all actions.

Return value
A CCActionManager object.
cocos2d::CCAction*runAction()

Executes an action, and returns the action that is executed.

This node becomes the action’s target. Refer to CCAction::getTarget()

Return value
An Action pointer

⚠️ Actions don't retain their target.

voidstopAllActions()

Stops and removes all actions from the running action list .

voidstopAction()

Stops and removes an action from the running action list.

Parameters

An

action object to be removed.
voidstopActionByTag(
inttag
)

Removes an action from the running action list by its tag.

Parameters

A

tag that indicates the action to be removed.
cocos2d::CCAction*getActionByTag(
inttag
)

Gets an action from the running action list by its tag.

Return value
The action object with the given tag.
uintnumberOfRunningActions()

Returns the numbers of actions that are running plus the ones that are schedule to run (actions in actionsToAdd and actions arrays).

Composable actions are counted as 1 action. Example: If you are running 1 Sequence of 7 actions, it will return 1. If you are running 7 Sequences of 2 actions, it will return 7.

Return value
The number of actions that are running plus the ones that are schedule to run
virtualvoidsetScheduler()

Sets a CCScheduler object that is used to schedule all “updates” and timers.

Parameters

scheduler

A CCShdeduler object that is used to schedule all "update" and timers.

⚠️ If you set a new CCScheduler, then previously created timers/update are going to be removed.

virtualcocos2d::CCScheduler*getScheduler()

Gets a CCSheduler object.

Return value
A CCScheduler object.
boolisScheduled()

Checks whether a selector is scheduled.

Parameters

selector

A function selector
Return value
Whether the funcion selector is scheduled.
voidscheduleUpdate()

Schedules the “update” method.

It will use the order number 0. This method will be called every frame. Scheduled methods with a lower order value will be called before the ones that have a higher order value. Only one “update” method could be scheduled per node.

voidscheduleUpdateWithPriority(
intpriority
)

Schedules the “update” method with a custom priority.

This selector will be called every frame. Scheduled methods with a lower priority will be called before the ones that have a higher value. Only one “update” selector could be scheduled per node (You can’t have 2 ‘update’ selectors).

voidunscheduleUpdate()
No description provided
voidschedule(,
floatinterval
,
uintrepeat
,
floatdelay
)

Schedules a custom selector.

If the selector is already scheduled, then the interval parameter will be updated without scheduling it again.

Parameters

interval

Tick interval in seconds. 0 means tick every frame. If interval = 0, it's recommended to use scheduleUpdate() instead.

repeat

The selector will be excuted (repeat + 1) times, you can use kCCRepeatForever for tick infinitely.

delay

The amount of time that the first tick will wait before execution.
// firstly, implement a schedule function
void MyNode::TickMe(float dt);
// wrap this function into a selector via schedule_selector marco.
this->schedule(schedule_selector(MyNode::TickMe), 0, 0, 0);
voidschedule(,
floatinterval
)

Schedules a custom selector with an interval time in seconds.

Parameters

selector

A function wrapped as a selector

interval

Callback interval time in seconds. 0 means tick every frame,
voidscheduleOnce(,
floatdelay
)

Schedules a selector that runs only once, with a delay of 0 or larger

Parameters

selector

A function wrapped as a selector

delay

The amount of time that the first tick will wait before execution.
voidschedule()

Schedules a custom selector, the scheduled selector will be ticked every frame

Parameters

selector

A function wrapped as a selector
voidunschedule()

Unschedules a custom selector.

Parameters

selector

A function wrapped as a selector
voidunscheduleAllSelectors()

Unschedule all scheduled selectors: custom selectors, and the ‘update’ selector. Actions are not affected by this method.

voidresumeSchedulerAndActions()

Resumes all scheduled selectors and actions. This method is called internally by onEnter

voidpauseSchedulerAndActions()

Pauses all scheduled selectors and actions. This method is called internally by onExit

virtualvoidupdate(
floatdelta
)
No description provided
voidtransform()

Performs OpenGL view-matrix transformation based on position, scale, rotation and other attributes.

voidtransformAncestors()

Performs OpenGL view-matrix transformation of it’s ancestors. Generally the ancestors are already transformed, but in certain cases (eg: attaching a FBO) It’s necessary to transform the ancestors again.

virtualvoidupdateTransform()

Calls children’s updateTransform() method recursively.

This method is moved from CCSprite, so it’s no longer specific to CCSprite. As the result, you apply CCSpriteBatchNode’s optimization on your customed CCNode. e.g., batchNode->addChild(myCustomNode), while you can only addChild(sprite) before.

virtualcocos2d::CCAffineTransformconstnodeToParentTransform()

Returns the matrix that transform the node’s (local) space coordinates into the parent’s space coordinates. The matrix is in Pixels.

ℹ Robtop Addition: return type changed from CCAffineTransform to const CCAffineTransform

virtualcocos2d::CCAffineTransformconstnodeToParentTransformFast()
No description provided
virtualcocos2d::CCAffineTransformconstparentToNodeTransform()

Returns the matrix that transform parent’s space coordinates to the node’s (local) space coordinates. The matrix is in Pixels.

ℹ Robtop Addition: return type changed from CCAffineTransform to const CCAffineTransform

virtualcocos2d::CCAffineTransformnodeToWorldTransform()

Returns the world affine transform matrix. The matrix is in Pixels.

virtualcocos2d::CCAffineTransformnodeToWorldTransformFast()
No description provided
virtualcocos2d::CCAffineTransformworldToNodeTransform()

Returns the inverse world affine transform matrix. The matrix is in Pixels.

cocos2d::CCPointconvertToNodeSpace()

Converts a Point to node (local) space coordinates. The result is in Points.

cocos2d::CCPointconvertToWorldSpace()

Converts a Point to world space coordinates. The result is in Points.

cocos2d::CCPointconvertToNodeSpaceAR()

Converts a Point to node (local) space coordinates. The result is in Points. treating the returned/received node point as anchor relative.

cocos2d::CCPointconvertToWorldSpaceAR()

Converts a local Point to world space coordinates.The result is in Points. treating the returned/received node point as anchor relative.

cocos2d::CCPointconvertTouchToNodeSpace()

convenience methods which take a CCTouch instead of CCPoint

cocos2d::CCPointconvertTouchToNodeSpaceAR()

converts a CCTouch (world coordinates) into a local coordinate. This method is AR (Anchor Relative).

voidsetAdditionalTransform()

Sets the additional transform.

ℹ The additional transform will be concatenated at the end of nodeToParentTransform. It could be used to simulate `parent-child` relationship between two nodes (e.g. one is in BatchNode, another isn't).

// create a batchNode
CCSpriteBatchNode* batch= CCSpriteBatchNode::create("Icon-114.png");
this->addChild(batch);
// create two sprites, spriteA will be added to batchNode, they are using different textures.
CCSprite* spriteA = CCSprite::createWithTexture(batch->getTexture());
CCSprite* spriteB = CCSprite::create("Icon-72.png");
batch->addChild(spriteA); 
// We can't make spriteB as spriteA's child since they use different textures. So just add it to layer.
// But we want to simulate `parent-child` relationship for these two node.
this->addChild(spriteB); 
//position
spriteA->setPosition(ccp(200, 200));
// Gets the spriteA's transform.
CCAffineTransform t = spriteA->nodeToParentTransform();
// Sets the additional transform to spriteB, spriteB's postion will based on its pseudo parent i.e. spriteA.
spriteB->setAdditionalTransform(t);
//scale
spriteA->setScale(2);
// Gets the spriteA's transform.
t = spriteA->nodeToParentTransform();
// Sets the additional transform to spriteB, spriteB's scale will based on its pseudo parent i.e. spriteA.
spriteB->setAdditionalTransform(t);
//rotation
spriteA->setRotation(20);
// Gets the spriteA's transform.
t = spriteA->nodeToParentTransform();
// Sets the additional transform to spriteB, spriteB's rotation will based on its pseudo parent i.e. spriteA.
spriteB->setAdditionalTransform(t);
cocos2d::CCComponent*getComponent()const

///

virtualbooladdComponent()

adds a component

virtualboolremoveComponent()

removes a component by its name

virtualboolremoveComponent()

removes a component by its pointer

virtualvoidremoveAllComponents()

removes all components

virtualvoidupdateTweenAction(,)
No description provided
cocos2d::CCNode&operator=()
No description provided
virtualvoidupdateTweenActionInt(,)
No description provided
cocos2d::CCAffineTransformgetTransformTemp()
No description provided
boolgetUseChildIndex()
No description provided
voidsetUseChildIndex()
No description provided
voidqsortAllChildrenWithIndex()
No description provided
voidsortAllChildrenNoIndex()
No description provided
voidsortAllChildrenWithIndex()
No description provided
voidupdateChildIndexes()
No description provided
Fields0
Protected member functions0
Protected fields38
floatm_fRotationX
;

///< rotation angle on x-axis

floatm_fRotationY
;

///< rotation angle on y-axis

floatm_fScaleX
;

///< scaling factor on x-axis

floatm_fScaleY
;

///< scaling factor on y-axis

floatm_fVertexZ
;

///< OpenGL real Z vertex

cocos2d::CCPointm_obPosition
;

///< position of the node

floatm_fSkewX
;

///< skew angle on x-axis

floatm_fSkewY
;

///< skew angle on y-axis

cocos2d::CCPointm_obAnchorPointInPoints
;

///< anchor point in points

cocos2d::CCPointm_obAnchorPoint
;

///< anchor point normalized (NOT in points)

cocos2d::CCSizem_obContentSize
;

///< untransformed size of the node

cocos2d::CCAffineTransformm_sAdditionalTransform
;

///< transform

;

///< transform

;

///< transform

;

///< a camera

;

///< a grid

;

///< array of children nodes

;

///< weak reference to parent node

void*m_pUserData
;

///< A user assingned void pointer, Can be point to any cpp object

cocos2d::CCObject*m_pUserObject
;

///< A user assigned CCObject

cocos2d::CCGLProgram*m_pShaderProgram
;

///< OpenGL shader

cocos2d::ccGLServerStatem_eGLServerState
;

///< OpenGL servier side state

;

///< scheduler used to schedule timers and updates

;

///< a pointer to ActionManager singleton, which is used to handle all the actions

boolm_bRunning
;

///< is running

boolm_bTransformDirty
;

///< transform dirty flag

boolm_bInverseDirty
;

///< transform dirty flag

boolm_bAdditionalTransformDirty
;

///< The flag to check whether the additional transform is dirty

char[10]pad1782
;
No description provided
boolm_bVisible
;

///< is this node visible

boolm_bIgnoreAnchorPointForPosition
;

///< true if the Anchor Point will be (0,0) when you position the CCNode, false otherwise. ///< Used by CCLayer and CCScene.

boolm_bReorderChildDirty
;

///< children order dirty flag

intm_nScriptHandler
;

///< script handler for onEnter() & onExit(), used in Javascript binding and Lua binding.

intm_nUpdateScriptHandler
;

///< script handler for update() callback per frame, which is invoked from lua & javascript.

;

///< type of script binding, lua or javascript

cocos2d::CCComponentContainer*m_pComponentContainer
;

///< Dictionary of components

boolm_bUnkBool1
;
No description provided
boolm_bUnkBool2
;
No description provided