// 設置CCMenuItemFont的默認屬性
[CCMenuItemFont setFontName:@"Marker Felt"];
[CCMenuItemFont setFontSize:26];
// 生成幾個文字標籤並指定它們的選擇器
CCMenuItemFont* item1 = [CCMenuItemFont itemFromString:@"Go Back!" target:self selector:@selector(menuItem1Touched:)];
CCSprite* normal = [CCSprite spriteWithFile:@"Icon.png"];
normal.color = ccRED;
CCSprite* selected = [CCSprite spriteWithFile:@"Icon.png"];
selected.color = ccGREEN;
CCMenuItemSprite* item2 = [CCMenuItemSprite itemFromNormalSprite:normal
selectedSprite:selected target:self selector:@selector(menuItem2Touched:)];
// 用其它兩個菜單項生成一個切換菜單(圖片也可以用於切換)
[CCMenuItemFont setFontName:@"STHeitiJ-Light"];
[CCMenuItemFont setFontSize:18];
CCMenuItemFont* toggleOn = [CCMenuItemFont itemFromString:@"I'm ON!"];
CCMenuItemFont* toggleOff = [CCMenuItemFont itemFromString:@"I'm OFF!"];
CCMenuItemToggle* item3 = [CCMenuItemToggle itemWithTarget:self selector:@selector(menuItem3Touched:) items:toggleOn, toggleOff, nil];
// 用菜單項生成菜單
CCMenuItemLabel *item4 = [CCMenuItemLabel itemWithLabel:label target:self selector:@selector(menuItem1Touched:)];
item4.disabledColor = ccc3(32,32,64);
item4.color = ccc3(200,200,255);
CCMenu* menu = [CCMenu menuWithItems:item1, item2, item3, item4,nil];
menu.position = CGPointMake(size.width / 2, size.height / 2);
[self addChild:menu];
// 排列對齊很重要,這樣的話菜單項纔不會疊加在同一個位置
[menu alignItemsVerticallyWithPadding:40];
第一個菜單項基於CCMenuItemFont,用於顯示一條文字。當點擊此菜單項,它會調用menuItem1Touched方法。在程序內部,CCMenuItemFont只是簡單的生成一個CCLabel。如果你的場景中已經有一個CCLabel,你可以把它與CCMenuItemLabel類結合在一起使用。
同樣的,有兩個使用圖片的菜單項;一個是CCMenuItemImage,它利用圖片文件生成菜單項,內部實際上使用了CCSprite來實現。我在上述代碼裏使用了另一個類:CCMenuItemSprite。我認爲這個類使用起來更加方便,因爲它可以重複利用已有的精靈作爲參數。你可以改變同一個圖片的顏色,作爲顯示觸摸後高亮效果的圖片
CCMenuItemToggole只接受兩個繼承自CCMenuItem的對象作爲參數,當用戶點擊菜單時,菜單將會在兩個菜單項之間進行切換。你可以在CCMenuItemToggle裏使用文字標籤或者圖片。
最後,CCMenu本身被生成和放置在場景中。因爲所有菜單項都是CCMenu的子節點,它們放置的位置都是相對於CCMenu的。爲了不讓菜單互相疊加在一起,你必須調用一個CCMenu的排列對齊方法,比如alighItemsVerticallyWithPadding
注:從《Learn
IPhone and iPad Cocos2d Game Delevopment》書中轉載