八、CCMenu和CCMenuItem
2013-02-23 00:15
344 查看
游戏中经常会提供一些菜单项让用户开始游戏、暂停\继续游戏、打开\关闭音乐或者是返回到上一个界面,比如下面两张图中用红色线框标记的菜单项
![](http://img.my.csdn.net/uploads/201302/22/1361546156_2996.png)
![](http://img.my.csdn.net/uploads/201302/22/1361546173_8981.png)
我们可以使用CCMenu和CCMenuItem实现上述的菜单功能,CCMenu继承自CCLayer,只能添加CCMenuItem为子节点。一个CCMenuItem就可以表示一个菜单项。
CCMenuItem继承自CCNode,来看下它的继承结构
![](http://img.my.csdn.net/uploads/201302/22/1361546978_1119.png)
下面直接上代码
![](http://img.my.csdn.net/uploads/201302/23/1361550008_6357.png)
单击中间的青色的"On"后,变为了红色的off
![](http://img.my.csdn.net/uploads/201302/23/1361549769_7217.png)
长按下面的头像后,头像变为红色
![](http://img.my.csdn.net/uploads/201302/23/1361549808_4044.png)
其他CCMenuItem的用法都大同小异
![](http://img.my.csdn.net/uploads/201302/22/1361546156_2996.png)
![](http://img.my.csdn.net/uploads/201302/22/1361546173_8981.png)
我们可以使用CCMenu和CCMenuItem实现上述的菜单功能,CCMenu继承自CCLayer,只能添加CCMenuItem为子节点。一个CCMenuItem就可以表示一个菜单项。
CCMenuItem继承自CCNode,来看下它的继承结构
![](http://img.my.csdn.net/uploads/201302/22/1361546978_1119.png)
下面直接上代码
// 第一个菜单项: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];默认的效果图
![](http://img.my.csdn.net/uploads/201302/23/1361550008_6357.png)
单击中间的青色的"On"后,变为了红色的off
![](http://img.my.csdn.net/uploads/201302/23/1361549769_7217.png)
长按下面的头像后,头像变为红色
![](http://img.my.csdn.net/uploads/201302/23/1361549808_4044.png)
其他CCMenuItem的用法都大同小异
相关文章推荐
- cocos2d-x学习笔记-CCMenu和CCMenuItem详解
- 八、CCMenu和CCMenuItem
- 八、CCMenu和CCMenuItem
- CCMenu及CCMenuItem位置问题
- Mac开发 - 使用CCMenu和CCMenuItem添加菜单、右击菜单、Dock菜单
- 八、CCMenu和CCMenuItem
- cocos2d-x学习笔记-CCMenu和CCMenuItem详解
- 1.cocos2dx之Menu(CCMenuItemFont,CCMenuItemImage,CCMenuItemLabel,CCMenuItemSprite,CCMenuItemToggle)
- cocos2d-x 菜单CCMenu和CCMenuItemImage应用实例
- Cocos2d自定义组件|继承CCMenu或CCMenuItem
- cocos2d-x、CCMenu、CCMenuItem
- CCMenu超过CCScrollView边框还能点击处理,以及拖动CCMenuItem不响应点击事件
- cocos2d-x学习笔记-CCMenu和CCMenuItem详解
- CCMenuItemSprite 换按钮图片用initWithNormalSprite
- CCMenuItemSprite ---CCMenuItemImage::create无法显示全部菜单项的解决办法![待续]
- CCMenuItem的selector的格式
- 1.cocos2dx它Menu(CCMenuItemFont,CCMenuItemImage,CCMenuItemLabel,CCMenuItemSprite,CCMenuItemToggle)
- 在 cocos2d 中判断互相重叠的 CCMenuItem
- fatal error: CCMenuItem.h: No such file or directory
- cocox2d-x CCMenuItemFon