2012-03-17 55 views
0

在cocos2d引擎中,有一種將對象添加爲另一個子項的方法。在Cocos2d中添加子項

因此,例如在一個Game.m文件這行代碼:

CCMenu *menu = [CCMenu menuWithItems:pauseButton, nil]; pauseButton.position = ccp(s.width/2 - pauseButton.contentSize.width/2, (-s.height/2) + pauseButton.contentSize.height/2); [self addChild:menu z:100];

你可以看到CCMenu的菜單實例添加爲孩子游戲的類對象。這實際上是做什麼的?這是爲了記憶的目的嗎?

回答

1

這種層次結構系統有助於組織和引用您的遊戲組件。並顯示它們。

Game.m是你的場景,它會顯示你的遊戲元素。但是,它不知道這些元素是什麼。所以這個場景有一個孩子列表,它會「顯示」他們(精靈,按鈕,標籤等)。因此,您將一個孩子添加到場景中,以此來告訴場景需要顯示這個孩子,因爲這是一個視覺元素。

1

可可和Qt也使用這種類型的層次結構,您可以在其中將一個視圖添加爲另一個視圖。它與內存使用無關,主要目的是明確責任(Cocoa:Responder鏈)。

在用戶界面中,最下面的視圖獲得了對用戶輸入做出反應的第一個機會。如果一個視圖對用戶輸入沒有反應,它會將責任傳遞給它的父項。然而,在Cocos2D中,這並沒有被使用,它主要成爲一個系統來定位節點相對於彼此並將節點組合在一起,以便它們都被繪製在相同的「深度層」上。

像這樣的樹狀層次結構的缺點是,您無法輕鬆遍歷場景中的所有節點,而無需遞歸到每個子樹中。