游戏中经常会提供一些菜单项让用户开始游戏、暂停\继续游戏、打开\关闭音乐或者是返回到上一个界面,比如下面两张图中用红色线框标记的菜单项

   

我们可以使用CCMenu和CCMenuItem实现上述的菜单功能,CCMenu继承自CCLayer,只能添加CCMenuItem为子节点。一个CCMenuItem就可以表示一个菜单项。

CCMenuItem继承自CCNode,来看下它的继承结构

下面直接上代码

  1. // 第一个菜单项:CCMenuItemFont
  2. // 设置文字大小
  3. [CCMenuItemFont setFontSize:50];
  4. CCMenuItemFont *item1 = [CCMenuItemFont itemFromString:@"文字菜单" block:^(id sender) {
  5. NSLog(@"点击了文字菜单");
  6. }];
  7. // 文字为黄色
  8. item1.color = ccc3(255, 255, 0);
  9. // 第二个菜单项:CCMenuItemToggle
  10. // 重新设置字体和大小
  11. [CCMenuItemFont setFontName:@"Courier New"];
  12. [CCMenuItemFont setFontSize:40];
  13. // on为青色
  14. CCMenuItemFont *on = [CCMenuItemFont itemFromString:@"On"];
  15. on.color = ccc3(0, 255, 255);
  16. // off为红色
  17. CCMenuItemFont *off = [CCMenuItemFont itemFromString:@"Off"];
  18. off.color = ccc3(255, 0, 0);
  19. CCMenuItemToggle *item2 = [CCMenuItemToggle itemWithBlock:^(id sender) {
  20. NSLog(@"切换了开关状态");
  21. } items:on, off, nil];
  22. // 第三个菜单项:CCMenuItemSprite
  23. // 默认的精灵
  24. CCSprite *normal = [CCSprite spriteWithFile:@"lufy.png"];
  25. // 被按下时的精灵(红色)
  26. CCSprite *selected = [CCSprite spriteWithFile:@"lufy.png"];
  27. selected.color = ccRED;
  28. CCMenuItemSprite *item3 = [CCMenuItemSprite itemFromNormalSprite:normal selectedSprite:selected block:^(id sender) {
  29. NSLog(@"点击了图片按钮");
  30. }];
  31. // 按顺序添加菜单项到菜单中
  32. CCMenu *menu = [CCMenu menuWithItems:item1, item2, item3, nil];
  33. // 让菜单居中
  34. CGSize winSize = [CCDirector sharedDirector].winSize;
  35. menu.position = ccp(winSize.width * 0.5f, winSize.height * 0.5f);
  36. // 垂直方向排列菜单项,每个菜单项之间有30的垂直间距
  37. [menu alignItemsVerticallyWithPadding:30];
  38. // 添加菜单到图层中
  39. [self addChild:menu];

默认的效果图

单击中间的青色的"On"后,变为了红色的off

长按下面的头像后,头像变为红色

其他CCMenuItem的用法都大同小异

八、CCMenu和CCMenuItem的更多相关文章

  1. cocos2D(八)---- CCMenu && CCMenuItem

    些菜单项让用户開始游戏.暂停\继续游戏.打开\关闭音乐或者是返回到上一个界面,比方以下两张图中用红色线框标记的菜单项     我们能够使用CCMenu和CCMenuItem实现上述的菜单功能,CCMe ...

  2. Cocos2dx Widget button透明区域过滤

    小伟哥 遇到一个命题: button透明区域过滤.当点击一个建筑button.花的时候不得不想一些方法把点击透明区域过滤掉. 让点击也没有效果滴啦. 開始搜索了半天才有所思路. 在网络上非常多贴代码的 ...

  3. cocos2d-x Menu、MenuItem

    转自:http://codingnow.cn/cocos2d-x/832.html 学习cocos2d-x中的菜单主要需要了解:菜单(CCMenu)和菜单项(CCMenuItem)以及CCMenuIt ...

  4. 1.cocos2dx存储卡的游戏代码、而游戏移植到“华为荣耀”电话、问题的总结移植

     1记忆卡片游戏代码 CardItem.h #pragmaonce #ifndef__CardItem_H__ #define__CardItem_H__ #include"cocos2 ...

  5. Cocos2d中的Menu使用

    学习cocos2d-x中的菜单主要须要了解:菜单(CCMenu)和菜单项(CCMenuItem)以及CCMenuItem的详细子类. a. 以下来学习一下相关的类. 1. CCMenu 菜单,是CCL ...

  6. cocos2dx基础篇(5) 按钮

    这篇是直接复制的别人的,太多了,难得写... [本节内容] CCMenu.CCMenuItem其具体的六个子类 [菜单CCMenu] 菜单CCMenu是用来装载菜单按钮的图层,图层中的子节点只能够是菜 ...

  7. 菜单类(CCMenu,CCMenuItem)

  8. cocos2dx中的菜单项CCMenuItem及其五个子类的使用

    /*CCMenuItem是一个虚基类,因此必须实现它的五个子类之一,再把子类对象赋给父类指针,相当于多态*/ CCMenuItem *fontItem = CCMenuItemFont::create ...

  9. Cocos2d-x学习笔记(10)(CCMenu菜单)

    1.CCMenu创建方式 CCMenu* menu = CCMenu::create(cocos2d::CCMenuItem* item,--)參数为CCMenuItem菜单项的对象可变參数列表 2. ...

随机推荐

  1. Android selector选择器的使用

    通常按钮在点击前和后有两种状态,比如点击前为蓝色,点击后为灰色,且不再响应点击事件. 如果不使用selector选择器,点击后,就需要在程序中进行以下的类似操作 button1.setBackgrou ...

  2. git的一个merge流程

    git merge testSupport 合并testSupport分支代码到当前分支. 若无冲突发生,git commit -m "RM ID:5094",在git push即 ...

  3. EF的Model First

    一,添加ADO.NET实体数据模型(即edmx) 1,添加edmx         新建一个类库项目,项目中添加新项,选择数据/ADO.NET实体数据模型,如下图.   点击添加,实体数据模型向导窗口 ...

  4. <input type="hidden" id="haha" name="wang" value="xiaodong" />

    jsp中一个隐藏的文本框,文本框里的值是:xiaodong id属性和name属性:就是在JavaScript中或者控制器中根据id或name属性取它的value的值 开发人员所需要,又不想让用户看到 ...

  5. SA 的参数

    SA 的参数也只能是常数数组. http://www.cnblogs.com/del/archive/2009/10/27/1590692.html ja := SA([]); jo := SO(); ...

  6. 阻止Infinitescroll.js无限滚动加载页面解决方法

    由于某些原因,想终止当前页继续翻页的操作,可在Infinitescroll回调函数中将翻页事件取消. 代码如下: // -- 每页滚屏加载的页数-- var IpageItems = 5; var i ...

  7. ctime、atime

    Linux系统文件有三个主要的时间属性,分别是ctime(change time, 而不是create time), atime(access time), mtime(modify time).后来 ...

  8. VS2010中添加lib库引用

    VS2010中添加lib库引用: 1 菜单  项目---> 属性--->配置属性-->链接器---->输入---附加依赖项,  加入库名,如: my_API.lib; 或是在c ...

  9. [转] lib和dll 区别,生成及使用方法

    lib 和 dll 的区别.生成以及使用详解 [目录] lib dll介绍 生成动态库 调用动态库 生成静态库 调用静态库 首先介绍一下静态库(静态链接库).动态库(动态链接库)的概念,首先两者都是代 ...

  10. 在hibernate中用sql语句

    在hibernate中用sql语句,语句是createSQLquery 查出来的是,一列或者多列的数据,要将其转化为对象,有两种方式, 对于已经被hibernate所管理的实体类,在后面加.adden ...