我學cocos2d-x (三) Node:一切可視化對象的祖先
阿新 • • 發佈:2017-08-13
父類 顯示 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:一切可視化對象的祖先