1. 程式人生 > >我學cocos2d-x (三) Node:一切可視化對象的祖先

我學cocos2d-x (三) Node:一切可視化對象的祖先

父類 顯示 fine rtu cocos2 static trac 坐標 ati

在cocos2d-x中一切可視化的對象都繼承自Node(如文字(label)、精靈(sprite)、場景(scene)、布局(layer))。這是一個純虛類。主要負責決定元素顯示的位置。


由導演(Director)負責場景(Scene)的切換,在場景中加入不同的布局(Layer),這裏有一個zOrder的值,僅僅有處於同一個zOrder中的Layer才幹進行交互。


Scene和Layer在對象顯示中起到了比較基本的作用,我們一般都是在Scene和Layer中來處理可視化對象的布局、碰撞、分數等狀態的顯示。


Scene是一個抽象類,僅用於依據對象的像素坐標把對象放置到場景中正確的位置。


Layer類本身沒有特殊的功能。但它能夠用於接收觸摸事件和加速輸入。


在Node中又幾個比較重要的方法須要在子類中實現:


virtual bool init() override;

在cococs2d-x中,使用init方法進行初始化,在這種方法中,須要調用父類的init方法,然後能夠進行子類的初始化,此方法返回false表示初始化失敗。cocos2d-x不會進行界面的繪制。


static Layer *create();

用於創建和初始化Node對象。在子類中使用CREATE_FUNC這個宏來實現此方法。這樣就實現了子類構造函數和init方法的調用:


#define CREATE_FUNC(__TYPE__) \

static __TYPE__* create() \

{ \

__TYPE__ *pRet = new __TYPE__(); \

if (pRet && pRet->init()) \

{ \

pRet->autorelease(); \

return pRet; \

} \

else \

{ \

delete pRet; \

pRet = NULL; \

return NULL; \

} \

}


我學cocos2d-x (三) Node:一切可視化對象的祖先