游戏世界多姿多彩,无论多靓丽的游戏,多耐玩的游戏,在与游戏用户交互上的往往是菜单。 上一章我们已经大概了解了导演、节点、层、精灵。这一章以菜单为主题。

菜单(Menu)包含以下内容:

1.精灵菜单项(MenuItemSprite)

2.图片菜单项(MenuItemImage)

3.文字菜单项(MenuItemFont)

4.标签菜单项(MenuItemLabel)

4.开关菜单项(MenuItemToggle)

菜单的继承关系:

这里图片菜单项也是同样继承于精灵菜单下。图片菜单项也可称为精灵菜单 。文字菜单项继承于标签菜单项下。总的来说菜单被分为三大类。

具体实现案例:

 #include "HelloWorldScene.h"
USING_NS_CC; Scene* HelloWorld::createScene()
{
auto scene = Scene::create(); auto layer = HelloWorld::create(); scene->addChild(layer); return scene;
} // on "init" you need to initialize your instance
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !Layer::init() )
{
return false;
} //从导演单例中获取屏幕大小
Size visibleSize = Director::getInstance()->getVisibleSize(); //-----------------------------------------------------------------------
//精灵菜单 auto Spr =Sprite::create("CloseNormal.png"); //创建精灵 auto pStartItem =MenuItemSprite::create(Spr,Spr,CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); pStartItem->setPosition(,); //-----------------------------------------------------------------------
//图片菜单 MenuItemImage* pCloseItem = MenuItemImage::create(
"CloseNormal.png", //正常图片
"CloseSelected.png",//点击图片
CC_CALLBACK_1(HelloWorld::menuCloseCallback,this));//点击菜单执行的函数
pCloseItem->setPosition(,); //-----------------------------------------------------------------------
//标签菜单 auto label = Label::createWithSystemFont("I am Label Item.", "Arial", ); //标签 //标签菜单
MenuItemLabel* pLabelItem = MenuItemLabel::create(label,CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); pLabelItem->setPosition(,); //-----------------------------------------------------------------------
//文字菜单 auto pFontItem =MenuItemFont::create("hello",CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); pFontItem->setPosition(,); //开关菜单
//MenuItemToggle
MenuItemToggle * pToggleMenu =MenuItemToggle::createWithCallback(
CC_CALLBACK_1(HelloWorld::menuCloseCallback,this),
MenuItemFont::create("On"),
MenuItemFont::create("Off"),
NULL);
pToggleMenu ->setPosition(,); //-----------------------------------------------------------------------
//菜单 容纳一切菜单子项
Menu* pMenu = Menu::create(pStartItem,pCloseItem, pLabelItem,pFontItem,pToggleMenu, NULL); pMenu->setPosition(Vec2::ZERO);//位置定在原点 this->addChild(pMenu); return true;
} void HelloWorld::menuCloseCallback(Ref* pSender)
{
log("点击我了"); }

效果图:

菜单(Menu)类常用方法简介

菜单类提供了不同几种方法来排列菜单项,使用它们你可以垂直排列你的菜单项,也可以水平排列,一下简单介绍这些方法的参数和用法:

1.使用void
alignItemsVertically();和 void alignItemsVerticallyWithPadding(float
padding);可以使菜单项在垂直方向排列。其中padding参数为每个菜单项在垂直方向上的间距,如果没有该参数,则以默认间距排列。

2.使用void alignItemsHorizontally();和void
alignItemsHorizontallyWithPadding(float
padding);可以使菜单项在水平方向排列。其中padding参数为每个菜单项在水平方向上的间距,如果没有该参数,则以默认间距排列。

Ok.关于Cocos2d菜单的分享就到此结束。下一章以Cocos2d的动作为主要内容进行浅析

 

【Cocos2d入门教程四】Cocos2d-x菜单篇的更多相关文章

  1. 无废话ExtJs 入门教程四[表单:FormPanel]

    无废话ExtJs 入门教程四[表单:FormPanel] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在窗体里加了个表单.如下所示代码区的第28行位置,items:form. ...

  2. PySide——Python图形化界面入门教程(四)

    PySide——Python图形化界面入门教程(四) ——创建自己的信号槽 ——Creating Your Own Signals and Slots 翻译自:http://pythoncentral ...

  3. Elasticsearch入门教程(四):Elasticsearch文档CURD

    原文:Elasticsearch入门教程(四):Elasticsearch文档CURD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...

  4. RabbitMQ入门教程(四):工作队列(Work Queues)

    原文:RabbitMQ入门教程(四):工作队列(Work Queues) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:/ ...

  5. JasperReports入门教程(四):多数据源

    JasperReports入门教程(四):多数据源 背景 在报表使用中,一个页面需要打印多个表格,每个表格分别使用不同的数据源是很常见的一个需求.假如我们现在有一个需求如下:需要在一个报表同时打印所有 ...

  6. 【Cocos2d入门教程六】Cocos2d-x事件篇之触摸

    Cocos游戏当中产生一个事件时,可以有多个对象在监听该事件,所以有优先级(Priority).优先级越高(Priority值越小),事件响应越靠前. 关系图: 新 事件分发机制:在2.x 版本事件处 ...

  7. WebGL入门教程(四)-webgl颜色

    前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL入门教程(三)-webgl动画 颜色效果图: 操作步骤: 1.创建HTML5 canva ...

  8. Spring Cloud 入门教程(四): 分布式环境下自动发现配置服务

    前一章, 我们的Hello world应用服务,通过配置服务器Config Server获取到了我们配置的hello信息“hello world”. 但自己的配置文件中必须配置config serve ...

  9. 【Cocos2d入门教程三】HelloWorld之一目了然

    什么程序都是从HelloWorld先开始.同样Cocos2d-x我们先从HelloWorld进行下手.下面是HelloWorld的运行完成图: 建立好的Cocos游戏项目中会有两个比较常用接触的文件夹 ...

随机推荐

  1. 将Excel另存为CSV格式文件

    直接将Excel另存为CSV,速度很快: $CurrentPath = $MyInvocation.MyCommand.Path.substring(0,$MyInvocation.MyCommand ...

  2. c++课程实训 银行储蓄系统

    基本要求:定义了用户类(User)和银行类(Bank),用成员函数实现各种功能,多文件组织程序.能用文本文件存取数据(如演示样例中给出的技术): 拓展方向: 序号 加分项目 细       则 1 改 ...

  3. Codeforces Gym 100803C Shopping 贪心

    Shopping 题目连接: http://codeforces.com/gym/100803/attachments Description Your friend will enjoy shopp ...

  4. 关于OPenGL和OSG的矩阵 (转)

    关于OPenGL和OSG的矩阵 矩阵真的是一个很神奇的数学工具, 虽然单纯从数学上看, 它并没有什么特别的意义, 但一旦用到空间中的坐标变换,它就“一遇风云便成龙”, 大显神威了.简单的工具实现了复杂 ...

  5. NGINX源代码剖析 之 CPU绑定(CPU亲和性)

    作者:邹祁峰 邮箱:Qifeng.zou.job@gmail.com 博客:http://blog.csdn.net/qifengzou 日期:2014.06.12 18:44 转载请注明来自&quo ...

  6. 开机就提示“请安装TCP/IP协议,error=10106”的解决的方法

    一.问题描写叙述: 今天开机时提示"请安装TCP/IP协议,error=10106",现象是popo,qq等登录不了,IE浏览器等连不了网,使用ping命令ping其它机器和路由器 ...

  7. nopCommerce 数据库初试化及数据操作

    系统启动时执行任务:IStartupTask,启动时执行的任务主要是数据库的初始化和加载. IStartupTask调用IEfDataProvider进行数据库的初始化. IEfDataProvide ...

  8. C++11实现Qt的信号槽机制

    概述 Qt的信号槽机制是Qt的核心机制,按钮点击的响应.线程间通信等都是通过信号槽来实现的,boost里也有信号槽,但和Qt提供的使用接口很不一样,本文主要是用C++11来实现一个简单的信号槽,该信号 ...

  9. IIS 之 HTTP 错误 500.19(无法访问请求页面,因为该页的相关配置数据无效)

    HTTP 错误 500.19- Internal Server Error 错误解决方法,碰到这个问题的原因有很多,大家可以参考下,看属于哪种情况. 刚在本机部署了一个WebService测试,浏览的 ...

  10. C# 数据的加密解密

    /// <summary> /// 加密数据 /// </summary> /// <param name="Text"></param& ...