cocos2d開發之菜單CCMenu

// 設置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》書中轉載


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章