cocos2d-X學習之主要類介紹:節點CCNode

首先是類結構: 
wps_clip_image-19960html

能夠看到CCNode 幾乎是遊戲中處理的大部分類的父類,其主要有如下函數:node

virtual int  getZOrder (void) //獲取節點的順序算法

virtual const CCPoint &  getPosition (void) //獲取節點的位置函數

virtual void  setPosition (const CCPoint &var) //設置節點的位置動畫

virtual CCArray *  getChildren (void) //獲取其全部子節點ui

virtual CCCamera *  getCamera (void)//獲取其對應的攝像機url

virtual bool  getIsVisible (void) //判斷節點是否可見spa

virtual void  setIsVisible (bool var) //設置節點可見性3d

virtual const CCPoint &  getAnchorPoint (void) //獲取節點的錨點的位置指針

virtual void  setAnchorPoint (const CCPoint &var) //設置節點的錨點位置

virtual bool  getIsRunning (void) //判斷節點是否在運行

virtual CCNode *  getParent (void)//獲取父及節點指針

virtual void  setParent (CCNode *var) //設置節點的父節點

virtual int  getTag (void) //獲取節點的tag

virtual void  setTag (int var) //設置節點的tag

char *  description (void) //返回節點的描述

virtual void  onEnter () //進入節點時的回調函數

virtual void  onEnterTransitionDidFinish ()//進入節點後的回調函數

virtual void  onExit ()//離開節點時的回調函數

virtual void  addChild (CCNode *child)//增長節點

virtual void  addChild (CCNode *child, int zOrder) //經過順序添加節點

virtual void  addChild (CCNode *child, int zOrder, int tag)//經過順序和tag添加節點

void  removeFromParentAndCleanup (bool cleanup)//刪除父節點中的當前節點並清除動做及回調函數

virtual void  removeChild (CCNode *child, bool cleanup) //刪除節點

void  removeChildByTag (int tag, bool cleanup)//經過tag刪除節點

virtual void  removeAllChildrenWithCleanup (bool cleanup)//刪除節點並清除動做及回調函數

CCNode *  getChildByTag (int tag)//經過tag獲取節點

virtual void  reorderChild (CCNode *child, int zOrder)//根據order從新排序

virtual void  cleanup (void)//清除動做

virtual void  draw (void)//繪製本身

virtual void  visit (void)//訪問節點

CCAction *  runAction (CCAction *action) //運行動做

void  stopAllActions (void)//中止全部的動做

void  stopAction (CCAction *action)//中止動做

void  stopActionByTag (int tag) //經過tag中止動做

CCAction *  getActionByTag (int tag)//經過tag獲取動做的指針

unsigned int  numberOfRunningActions (void)//正在運行的動做的總數

void  schedule (SEL_SCHEDULE selector)//定義一個定時器

void  schedule (SEL_SCHEDULE selector, ccTime interval)//定義一個定時器

void  unschedule (SEL_SCHEDULE selector)//取消一個定時器

void  unscheduleAllSelectors (void)//取消全部定時器

void  resumeSchedulerAndActions (void)//恢復定時器和動做

void  pauseSchedulerAndActions (void)//暫停定時器和動做

static CCNode *  node (void)//生成一個節點

CCNode是cocos2d-x的渲染鏈,寫遊戲基本上就是和他打交道了,cocos2d-x同時只能渲染一個CCScene,所以CCScene是渲染的根節點。在構建遊戲時,通常是一個Scene中添加一個或者多個CCLayer,一個Layer中又添加多個CCSprite或者CCMenu,CCSprite中還能夠添加CCParticleSystem等等。這樣就構建了一個渲染樹,cocos2d-x歷遍這個樹來將圖像顯示在屏幕上。

coco2d-x的渲染其實是調用visit()函數來完成的:即visit()這個函數調用它包含的Child的zOrder<0的visit()函數,以後調用draw()函數,再調用Child的zOrder>=0的visit()函數,它其實是一個深度優先的算法。他的Child是按照zOrder排序的,以保證渲染的正確性。draw()的做用是繪製本身。在CCSprite這些確實須要繪製的類中,draw()調用openGL的函數來完成繪製功能——把一個紋理映射到一個矩形上。 

若是要自定義繪製一些圖像,能夠重寫draw()函數,不過不要忘記調用父類的draw()函數。 

能夠進行網狀關係的管理,其實CCScene,CCLayer也是一個CCNode.它提供節點增刪,包含,提供節點縮放,每一個節點有一個照相機,提供動畫支持,也就是說每個從CCNode派生的類均可以執行動畫操做;

相關文章
相關標籤/搜索