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

菜单(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. 系列文章--SharePoint 开发教程

    SharePoint 2013 图文开发系列之入门教程 学习地址:http://www.cnblogs.com/jianyus/p/3461719.html 里面有2007.2010.2013各个版本 ...

  2. 直接运行PowerShell脚本

    以管理员权限运行下面语句:ftype Microsoft.PowerShellScript.1="C:\WINDOWS\system32\windowspowershell\v1.0\pow ...

  3. myeclipse如何导入相应的jar包

    方法一: 相应的项目------>右键------->build path-------->Config BuildPath...------->Libraries------ ...

  4. MySQL常用工具

  5. ZooKeeper是什么?

    What is ZooKeeper? (译:什么是ZooKeeper?) ZooKeeper is a centralized service for maintaining configuratio ...

  6. .net MVC 碰到的问题

    1:问:回车会默认会触发页面从左边至右,从上到下索引位置第一的按钮事件.如何取消? 答:在不需要触发按钮事件的按钮中加一个属性:UseSubmitBehavior="false" ...

  7. hdu 2052 Picture(java)

    问题: 開始直接用输入的数作为宽和高,但实际上要多出两行边框,所以要加一个2. 还有题目要求最后要输出一个空行没有注意到. Picture Time Limit: 1000/1000 MS (Java ...

  8. sqlserver 各种判断是否存在(表名、函数、存储过程等)

    库是否存在 if exists(select * from master..sysdatabases where name=N'库名') print 'exists'elseprint 'not ex ...

  9. iOS执行时工具-cycript

    cycript是大神saurik开发的一个很强大的工具,能够让开发人员在命令行下和应用交互,在执行时查看和改动应用.它确实能够帮助你破解一些应用,但我认为这个工具主要还是用来学习其它应用的设计(主要是 ...

  10. 【React Native 实战】二维码扫描

    1.前言今天介绍React Native来实现二维码扫描的功能.首先我们要借助第三方插件react-native-barcode-scanner-universal来实现跨平台二维码扫描. 2.介绍 ...