[Cococs2d]Cocos2d-X結構關係

 首先是類結構: 

wps_clip_p_w_picpath-19960

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

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

virtual const CCPointgetPosition (void) //獲取節點的位置

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

virtual CCArraygetChildren (void) //獲取其所有子節點

virtual CCCameragetCamera (void)//獲取其對應的攝像機

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

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

virtual const CCPointgetAnchorPoint (void) //獲取節點的錨點的位置

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

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

virtual CCNodegetParent (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)//刪除節點並清除動作及回調函數

CCNodegetChildByTag (int tag)//通過tag獲取節點

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

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

virtual void  draw (void)//繪製自己

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

CCActionrunAction (CCAction *action) //運行動作

void  stopAllActions (void)//停止所有的動作

void  stopAction (CCAction *action)//停止動作

void  stopActionByTag (int tag) //通過tag停止動作

CCActiongetActionByTag (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 CCNodenode (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派生的類都可以執行動畫操作;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章