3.4 CCNode類層次體系
所有節(jié)點(diǎn)都有一個(gè)公共父節(jié)點(diǎn)類——CCNode,它定義了除節(jié)點(diǎn)顯示外的多數(shù)公共屬性和方法。圖3-2顯示了從CCNode繼承的一些最重要的類,將來你會(huì)經(jīng)常使用這些類。而且,即使只用這些類,也能制作出非常出色的游戲。
3.5 CCNode類
CCNode是所有節(jié)點(diǎn)的基類。它是一個(gè)沒有具體顯示的抽象類,僅用于定義所有節(jié)點(diǎn)的公共屬性和方法。
3.5.1 節(jié)點(diǎn)的處理方式
CCNode類實(shí)現(xiàn)了添加、獲取以及刪除子節(jié)點(diǎn)的所有方法。下面列舉了一些針對(duì)子節(jié)點(diǎn)的處理方式:
創(chuàng)建新節(jié)點(diǎn):
CCNode* childNode = [CCNode node];
把新建節(jié)點(diǎn)添加為子節(jié)點(diǎn):
[myNode addChild:childNode z:0 tag:123];
獲取子節(jié)點(diǎn):
CCNode* retrievedNode = [myNode getChildByTag:123];
利用標(biāo)記刪除子節(jié)點(diǎn);參數(shù)“cleanup”將令所有正在運(yùn)行的動(dòng)作(action)停止:
[myNode removeChildByTag:123 cleanup:YES];
利用指針刪除節(jié)點(diǎn):
[myNode removeChild:retrievedNode];
刪除某個(gè)節(jié)點(diǎn)的所有子節(jié)點(diǎn):
[myNode removeAllChildrenWithCleanup:YES];
將某個(gè)節(jié)點(diǎn)從其父節(jié)點(diǎn)中刪除:
[myNode removeFromParentAndCleanup:YES];
addChild方法中的參數(shù)“z”決定了節(jié)點(diǎn)的繪制順序。首先繪制z值最低的節(jié)點(diǎn),最后繪制z值最高的節(jié)點(diǎn)。如果多個(gè)節(jié)點(diǎn)擁有相同的z值,就按照添加它們的先后順序進(jìn)行繪制。當(dāng)然,這只對(duì)有具體顯示的節(jié)點(diǎn)(比如精靈)有效果。
tag參數(shù)保證了你在使用getChildByTag方法時(shí)能夠區(qū)分并獲取特定節(jié)點(diǎn)。