cocos2d-x 的节点操作涉及到以下几点
1. 节点之间的关系
2. 节点的添加操作
3. 节点的删除操作
4. 节点的查找操作
5. 节点的替换操作
6. 节点属性操作
0. 节点操作相关参数
/** 当前节点的Z轴顺序 **/ private int m_nZOrder = 0; /** 当前节点的子节点 **/ private Vector m_vChildren = new Vector(); /** 当前节点的父节点 **/ private CCNode m_Parent;
1. 节点之间的关系
2. 节点的添加操作
/**
* addChild(给当前节点添加子节点) * @Title: addChild * @Description: * 1. 如果节点为null或者已经有父节点的话则退出 * 2. 节点的插入采用插入排序的算法 * @param _node : 子节点 * @param _zOrder : z轴序列 * @param tag : 标识符 * @return void 返回类型 */ public void addChild(CCNode _node,int _zOrder,int tag) public void addChild(CCNode _node,int _zOrder) public void addChild(CCNode _node)
在添加节点的时候,为了保证添加的zOrder序列都在对应的位置,我们在每次添加节点的时候,都进行一次排序
/** * sortChildrens(排序所有节点) * @Title: sortChildrens * @Description: TODO */ public void insertSortChildrens(CCNode node) { int len = m_vChildren.size(); if(len == 0) { m_vChildren.addElement(node); return; } //倒插排序法 for(int i = len-1;i >= 0;i--) { if(node.getZOrder() >= ((CCNode)m_vChildren.elementAt(i)).getZOrder()) { m_vChildren.insertElementAt(node, i+1); return; } } }
3. 节点的删除操作
* public void removeChild(CCNode node,boolean cleanup) * public void removeChild(CCNode node) * public void removeFromParentAndCleanup(boolean cleanup) * public void removeFromParent() * public void removeAllChildrenWithCleanup(boolean cleanup) * public void removeChildByTag(int tag,boolean cleanup)
4. 节点的查找操作
* public CCNode getChildByTag(int tag) * public CCNode getChildIndex(int index)
5. 节点的替换操作
/** * * reorderChild(重新排序当前节点的Z轴序列) * @Title: reorderChild * @Description: TODO * @param node : 当前节点 * @param zOrder : Z轴序列 * @return void 返回类型 */ public void reorderChild(CCNode node,int zOrder)
6. 节点属性操作
* public Vector getChildren() * public int getChildrenCount()
7