八、CCMenu和CCMenuItem

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

   

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

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

下面直接上代码

[java] view plaincopy

  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,布布扣,bubuko.com

时间: 2024-10-13 01:47:46

八、CCMenu和CCMenuItem的相关文章

cocos2dx基础篇(7)——菜单按钮CCMenu、CCMenuItem

[本节内容] 菜单按钮在游戏中是经常被用到的,比如主菜单界面的菜单选项,暂停游戏时的菜单选项等等.cocos2dx引擎同样为我们提供了CCMenu菜单的功能,并包含了一些简单的菜单项CCMenuItem.且菜单项附带触碰按钮时,自动放大的效果. 温馨提示:本节内容比较多,需要大家慢慢分析,不要急于求成. 本节组织结构如下: 一.介绍CCMenu. 二.介绍CCMenuItem,及其具体的六个子类. 三.代码实战. [一.菜单CCMenu] 菜单CCMenu是专门用来承载菜单按钮的CCLayer图

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

些菜单项让用户開始游戏.暂停\继续游戏.打开\关闭音乐或者是返回到上一个界面,比方以下两张图中用红色线框标记的菜单项     我们能够使用CCMenu和CCMenuItem实现上述的菜单功能,CCMenu继承自CCLayer.仅仅能加入CCMenuItem为子节点.一个CCMenuItem就能够表示一个菜单项. CCMenuItem继承自CCNode.来看下它的继承结构 以下直接上代码 [java] view plaincopy // 第一个菜单项:CCMenuItemFont // 设置文字大

Cocos2d-x学习笔记(十一)CCMenu详解

原创文章,转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38901475 前言 一直在想究竟是先看CCMenu还是CCMenuItem后来想想还是先看CCMenu吧,因为它是CCMenuItem的载体,没有CCMenu也不可能有菜单. CCMenu头文件 typedef enum { kCCMenuStateWaiting, // 表示没有菜单项被选中 kCCMenuStateTrackingTouch // 表示有菜单项被选

Cocos2d-x CCBone添加点击事件以及换肤的方案。反正怎么用就看你自己了

前几天妹子切图的时候把UI做成了Animture,首先声明我不是学C++的我用cocos2dx也才一两个月.对于一些原理的上的东西我也没时间去深究.我需要的是解决方案.所以第一的反应是百度有没有相似的方案,而不是去看源码. 加Animate(动画)的方式很简单. 1 CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo("Example.png","Example.plist&qu

Cocos2dx Widget 按钮透明区域过滤

小伟哥 遇到一个命题: 按钮透明区域过滤.当点击一个建筑按钮.花的时候不得不想一些方法把点击透明区域过滤掉. 让点击也没有效果滴啦. 开始搜索了半天才有所思路. 在网络上很多贴代码的. http://blog.csdn.net/lwuit/article/details/40658347 整理后代码如下: bool CCMenu::CheckAlphaPoint(CCMenuItem* pChild, const CCPoint& point) { CCSize winSize = CCDire

cocos2dx[2.x]学习笔记

说明: 基于cocos2dx2.2.3,使用C++语言,在Visual Studio 2010进行开发的. 致谢: 在这里特别要感谢网络上给予我帮助的大牛,是他们的博客提供了很多cocos2dx的学习资料,才促使我的成长.以下的相关知识点,大多也是借鉴了他们的博客. 另外强烈建议大家去学习官方给出的TestCpp项目,里面涵盖了使用cocos2dx的精华知识部分. [cocos2dx 2.x] cocos2dx基础篇(1) --Cocos2D-X 和 VS2010 环境配置 cocos2dx基础

1.cocos2dx记忆卡片游戏代码、并将游戏移植到“华为荣耀”手机上、移植中的问题总结

 1记忆卡片游戏代码 CardItem.h #pragmaonce #ifndef__CardItem_H__ #define__CardItem_H__ #include"cocos2d.h" USING_NS_CC; classCardItem :publicCCSprite { public: staticCardItem *create(intidx); boolinit(intidx); CCLabelTTF *ttf; CCSprite *bg; CC_SYNTHESI

Cocos2d中的Menu使用

学习cocos2d-x中的菜单主要需要了解:菜单(CCMenu)和菜单项(CCMenuItem)以及CCMenuItem的具体子类. a. 下面来学习一下相关的类. 1. CCMenu 菜单,是CCLayer的子类,是一个层(容器),可以往里面添加菜单项.下面是它的类结构图: CCMenu默认接受触屏事件的优先级是-128(优先级很高,因为值越小,响应触屏事件的优先级越高),可以通过继承它实现自定义的效果,创建CCMenu对象的函数: static CCMenu* menuWithItems(C

1.cocos2dx内存管理和CCArray,CCMenuItem

1 C++内存管理 A 栈上的空间 自生自灭,不用管理 B 堆上的空间 手动new,手动delete,否则产生内存泄漏 2 内存管理的难处 管理原则,谁申请谁释放 3 内存的智能管理 主要有两种实现智能管理内存的技术,一种是引用计数,一是垃圾回收. 引用计数:通过给每个对象维护一个引用计数器,记录该对象当前被引用的次数.当对象增加一次引用时,计数器加1:而对象失去一次引用时,计数器减1:当引用计数为0 时,标志着该对象的生命周期结束,自动触发对象的回收释放.引用计数解决了对象的生命周期管理问题,