2012-12-11 84 views
0

新手到iOS和Cocos2d(2.X)相同CCMenu添加到多個場景

好,我想創建一個菜單對象,並從每個新場景調用它。

例子:

  • 場景1,添加菜單
  • 第二幕:加同樣的菜單,在場景1

我只看到了如何當你初始化層本身初始化CCMenu。您構建項目,然後將它們添加到CCMenu等。

我怎麼能初始化CCMenu一次,然後只需將其添加到什麼都場面我碰巧觀看?所以如果我正在觀看Scene1或Scene2,它仍然是相同的菜單。

這是否有意義?

回答

1

您需要爲每個場景使用不同的菜單實例,因此從技術上講,每個場景需要初始化一次。

但我認爲你在問:「我如何編寫一次代碼然後在每個場景中重複使用該代碼。」你會想創建一些你可以重用的CC對象。這可能是CCMenu,CCLayer的一個子類,或者其他適合最好的目的。所以,你可以嘗試這樣的:

@interface MyMenuLayer : CCLayer { 
    CCMenu *myMenu; 
} 
@end 

然後在.m文件,設置你的菜單,只要你喜歡。當您想將其包含在Scene1中時:

MyMenuLayer *menu = [MyMenuLayer node]; 
[self addChild:menu]; 

您可以在Scene2中使用完全相同的代碼。

(你可以只延長CCMenu代替CCLayer,但我個人更喜歡使用圖層代替菜單的工作。這是個人選擇的問題。)

很難給出一個非常明確的答案與信息你的問題,但我希望這能讓你走上正確的道路。

+0

謝謝,我想這就是我所問的。因此,當創建CC對象作爲CCLayer時,我可以在那裏聲明菜單,然後將其包含在場景中,對嗎?將此設爲CCLayer有什麼好處?我想我明白爲什麼我只想確認。 +1,謝謝 –

+0

你是對的;只需在自定義對象內創建菜單,然後將其包含在您想要的任何其他節點中(使用addChild)。將CCLayer與CCMenu相分離的好處是什麼?不多。這只是個人喜好的問題。如果你想在菜單中添加一個標題,將CCLayer包含進CCMenu會更有意義。 (我相信它可以用於CCMenu。) –

+0

另一個快速提示:我應該指定你想要繼承某種CCNode,而不是CCObject。但CCMenu和CCLayer是正確的例子。 –

相關問題