節點解釋: 節點是場景圖的基本元素。場景圖的基本元素必須是節點對象或者是節點對象的子類。
其中主要可以看到Layer、MenuItem、Scene、Sprite、TMXTiledMap(解析and渲染TMX地圖)、ParticleSystem(粒子系統基類)等等
Node是這些類的根類
節點的基本操作
- 創建節點
Node* childNode = Node::Create(); - 增加新的子節點
node->addChild(childNode,z深度,tag); - 查找子節點
Node* node=node->getChildByTag(tag) - node->removeChildTag(tag,true)刪除子節點,並停止所有該節點上的一切動作
- node->removeChild(childNode)通過Node指針刪除節點
- node->removeAllChildrenWithCleanup(true)刪除所有子節點,並停止這些子節點上的一切動作
- node->removeFromParentAndCleanup(true) 從父Node中刪除節點,並停止所有該節點上的一切動作
Node的重要屬性
- anchorPoint錨點
錨點指定了貼圖上和所在節點原點(也就是設置位置的點)
錨點的默認值是(0.5,0.5),表示的並不是一個像素點,而是一個乘數因子。(0.5,0.5)表示錨點位於貼圖長度乘以0.5和寬度乘以0.5的地方,即貼圖的中心。
改變錨點的值雖然可能看起來節點的圖像位置發生了改變,但其實並不會改變節點的位置,其實變化的只是貼圖相對於你設置的位置的相對位置,相當於你在移動節點里面的貼圖,而非節點本身。
position=(5,5),anchorPoin=(0.5,0.5)
position=(5,5),anchorPoin=(0,0)
position=(5,5),anchorPoin=(0.66,0.5)
游戲循環和調度
每一個游戲程序都有一個循環來不斷運行,它是由導演對象來管理維護。如果需要場景中的精靈運動起來,我們可以在游戲循環中使用定時器(Schedule)對精靈等對象的運動進行調度,因為Node類封裝了Schedule類,所以我們也可以直接使用Node中調用函數
Node中調用函數主要有
- void ScheduleUpdate(void)每個Node對象只要調用該函數,那么這個Node對象會定時地每幀回調用一次自己的update(float dt)函數
- void schedule(SEL_SCHEDULE selector,float interval)與scheduleUpdate函數功能一樣,不同的是我們可以指定回調函數(通過selector指定),也可以更加需要指定回調時間間隔
- void unscheduleUpdate(void) 停止update(float dt)函數調度
- void unscheduleAllSelectors(void)可以停止調度