【cocos2dx中Node类getParent和getChildByTag()】学习体会
參考http://cn.cocos2d-x.org/doc/cocos2d-x-3.0/d3/d82/classcocos2d_1_1_node.html
当中和child、parent有关的成员函数例如以下:
Children and Parent
|
|
virtual void | addChild (Node *child) |
加入一个子节点到容器内。z-order是0. 很多其它... |
|
virtual void | addChild (Node *child, int localZOrder) |
加入一个子节点到容器中,參数有一个局部Z轴顺序。 很多其它... |
|
virtual void | addChild (Node *child, int localZOrder, int tag) |
加入一个子节点到容器中,有Z轴顺序和一个标记。 | |
virtual Node * | getChildByTag (int tag) |
从容器中得到一个子节点通过它的标记。 很多其它... |
|
virtual Vector< Node * > & | getChildren () |
返回子节点数组。 很多其它... |
|
virtual const Vector< Node * > & | getChildren () const |
virtual ssize_t | getChildrenCount () const |
返回子节点的总数 很多其它... |
|
virtual void | setParent (Node *parent) |
设置父节点Sets the parent node 很多其它... |
|
virtual Node * | getParent () |
返回指向父节点的指针。 很多其它... |
|
virtual const Node * | getParent () const |
virtual void | removeFromParent () |
从父节点中删除一个节点。有一个cleanup參数。 假设这个节点是一个孤节点,那么什么都不会发生。 很多其它... |
|
virtual void | removeFromParentAndCleanup (bool cleanup) |
从父节点中删除一个节点 假设这个节点是一个孤节点。那么什么都不会发生。 | |
virtual void | removeChild (Node *child, bool cleanup=true) |
从容器中删除一个孩子,取决于cleanup參数同一时候会清除全部的活动的动作。 很多其它... |
|
virtual void | removeChildByTag (int tag, bool cleanup=true) |
从一个容器中删除一个孩子通过标记值。取决于cleanup參数同一时候会清除全部的活动的动作。 很多其它... |
|
virtual void | removeAllChildren () |
从容器中删除全部的孩子,with a cleanup。 很多其它... |
|
virtual void | removeAllChildrenWithCleanup (bool cleanup) |
从容器中删除全部的孩子, 取决于cleanup參数同一时候会清除全部的活动的动作。 很多其它... |
|
virtual void | reorderChild (Node *child, int localZOrder) |
对一个孩子又一次排序,设定一个新的z轴的值。 很多其它... |
|
virtual void | sortAllChildren () |
在绘画之前,排列全部的孩子数组一次,而不是每次加入或者删除子节点时都排序。 这种方法能够大量地提高性能。 很多其它... |
详细怎么用我也在学习中。可是比較实用的就是通过此。你能够调用节点(Node),一个游戏中的节点树随意一点Node对象都能够通过此方法获得,方便游戏开发。
举个样例
比方一个跑酷游戏scene有三个layer(动画,背景,分数)当中动画layer状态改变了。逻辑上要求还有一个分数layer做出对应改变。通过child和parent方法就能够非常高速定位到分数layer。