博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

cocos2d-x 节点操作 -->J2ME

Posted on 2014-01-15 19:04  zhangweia  阅读(406)  评论(0编辑  收藏  举报

  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.  节点之间的关系

                              image

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