cocos2D(八)---- CCMenu && CCMenuItem,cocos2d----ccmenu
遊戲中經常會提供一些功能表項目讓使用者開始遊戲、暫停\繼續遊戲、開啟\關閉音樂或者是返回到上一個介面,比如下面兩張圖中用紅色線框標記的功能表項目
我們可以使用CCMenu和CCMenuItem實現上述的菜單功能,CCMenu繼承自CCLayer,只能添加CCMenuItem為子節點。一個CCMenuItem就可以表示一個功能表項目。
CCMenuItem繼承自CCNode,來看下它的繼承結構
下面直接上代碼
[java] view plaincopy
- // 第一個功能表項目:CCMenuItemFont
- // 設定文字大小
- [CCMenuItemFont setFontSize:50];
- CCMenuItemFont *item1 = [CCMenuItemFont itemFromString:@"文字菜單" block:^(id sender) {
- NSLog(@"點擊了文字菜單");
- }];
- // 文字為黃色
- item1.color = ccc3(255, 255, 0);
-
- // 第二個功能表項目:CCMenuItemToggle
- // 重新設定字型和大小
- [CCMenuItemFont setFontName:@"Courier New"];
- [CCMenuItemFont setFontSize:40];
- // on為青色
- CCMenuItemFont *on = [CCMenuItemFont itemFromString:@"On"];
- on.color = ccc3(0, 255, 255);
- // off為紅色
- CCMenuItemFont *off = [CCMenuItemFont itemFromString:@"Off"];
- off.color = ccc3(255, 0, 0);
- CCMenuItemToggle *item2 = [CCMenuItemToggle itemWithBlock:^(id sender) {
- NSLog(@"切換了開關狀態");
- } items:on, off, nil];
-
- // 第三個功能表項目:CCMenuItemSprite
- // 預設的精靈
- CCSprite *normal = [CCSprite spriteWithFile:@"lufy.png"];
- // 被按下時的精靈(紅色)
- CCSprite *selected = [CCSprite spriteWithFile:@"lufy.png"];
- selected.color = ccRED;
- CCMenuItemSprite *item3 = [CCMenuItemSprite itemFromNormalSprite:normal selectedSprite:selected block:^(id sender) {
- NSLog(@"點擊了圖片按鈕");
- }];
-
- // 按順序添加功能表項目到菜單中
- CCMenu *menu = [CCMenu menuWithItems:item1, item2, item3, nil];
- // 讓菜單置中
- CGSize winSize = [CCDirector sharedDirector].winSize;
- menu.position = ccp(winSize.width * 0.5f, winSize.height * 0.5f);
- // 垂直方向排列功能表項目,每個功能表項目之間有30的垂直間距
- [menu alignItemsVerticallyWithPadding:30];
-
- // 添加菜單到圖層中
- [self addChild:menu];
預設的
單擊中間的青色的"On"後,變為了紅色的off
長按下面的頭像後,頭像變為紅色
其他CCMenuItem的用法都大同小異
原文地址:http://blog.csdn.net/q199109106q/article/details/8604273
感謝作者~!
Cocos2d CCMenu問題
Character_Info_menu
位置設定成ccp(0,0); 試試 你這明顯在位置跑到螢幕顯示的地區外部了。
剛剛開始學COCOS2D,在CCMenu中的菜單按鍵事件中,有按下的效果,但是沒有回調按鍵指定的函數,教
我著實沒看懂你事怎麼寫的。至少應該有:
CCMenuItemFont *font = [CCMenuItemFont itemWithTarget:self selector:@selector(myMethod:)];吧!現在沒有selector添加的地方啊!
這裡有一個CCMenu的例子;
CCMenuItem *starMenuItem = [CCMenuItemImage itemFromNormalImage:@"ButtonStar.png" selectedImage:@"ButtonStarSel.png" target:self
selector:@selector(starButtonTapped:)];
starMenuItem.position = ccp(60, 60);
CCMenu *starMenu = [CCMenu menuWithItems:starMenuItem, nil];
starMenu.position = CGPointZero;
[self addChild:starMenu];
然後相應函數starButtonTapped,就可以有相應了。