文本菜单是菜单项只是显示文本,文本菜单类包括了MenuItemLabel、MenuItemFont和MenuItemAtlasFont。MenuItemLabel是个抽象类,具体使用的时候是使用MenuItemFont和MenuItemAtlasFont两个类。
文本菜单类MenuItemFont,它的其中一个创建函数create定义如下:
- static MenultemAtlasFont*create ( const std::string & value, //要显示的文本
- const ccMenuCallback & callback //菜单操作的回调函数指针
- )
文本菜单类MenuItemAtlasFont是基于图片集的文本菜单项,它的其中一个创建函数create定义如下:
- static MenuItemAtlasFont* create ( const std::string & value, //要显示的文本
- const std::string & charMapFile, //图片集合文件
- int itemWidth, //要截取的文字在图片中的宽度
- int itemHeight, //要截取的文字在图片中的高度
- char startCharMap //菜单操作的回调函数指针
- )
这次我们会通过一个实例介绍一下文本菜单的使用,这个实例如下图所示,其中菜单Start是使用MenuItemFont实现的,菜单Help是使用MenuItemAtlasFont实现的。
下面我们看看HelloWorldScene.cpp中init函数如下:
- bool HelloWorld::init()
- {
- if ( !Layer::init() )
- {
- return false;
- }
- Size visibleSize = Director::getInstance()->getVisibleSize();
- Point origin = Director::getInstance()->getVisibleOrigin();
- Sprite *bg =Sprite::create("menu/background.png");
- bg->setPosition(Point(origin.x + visibleSize.width/2,
- origin.y +visibleSize.height /2));
- this->addChild(bg);
- MenuItemFont::setFontName("Times New Roman"); ①
- MenuItemFont::setFontSize(86); ②
- MenuItemFont *item1 = MenuItemFont::create("Start",
- CC_CALLBACK_1(HelloWorld::menuItem1Callback,this)); ③
- MenuItemAtlasFont *item2 = MenuItemAtlasFont::create("Help",
- "menu/tuffy_bold_italic-charmap.png",48, 65, ' ',
- CC_CALLBACK_1(HelloWorld::menuItem2Callback,this)); ④
- Menu* mn = Menu::create(item1, item2, NULL); ⑤
- mn->alignItemsVertically(); ⑥
- this->addChild(mn); ⑦
- return true;
- }
上述代码第①和②行是设置文本菜单的文本字体和字体大小。第③行代码是创建MenuItemFont菜单项对象,它是一个一般文本菜单,create是函数的第一个参数是菜单项的文本内容,第二个参数是点击菜单项回调的函数指针。其中CC_CALLBACK_1宏是定义一个回调函数,并函数与对象绑定在一起,1表示这个函数有一个输出参数,HelloWorld::menuItem1Callback是函数指针,this代表函数所在的对象。
HelloWorld::menuItem1Callback需要在HelloWorld.h头文件中声明,HelloWorld.h头文件代码如下:
- #include "cocos2d.h"
- class HelloWorld : public cocos2d::Layer
- {
- public:
- virtual bool init();
- static cocos2d::Scene* scene();
- void menuItem1Callback(cocos2d::Ref*pSender);
- void menuItem2Callback(cocos2d::Ref*pSender);
- CREATE_FUNC(HelloWorld);
- };
回调函数代码如下,函数中的参数是菜单项MenuItem的实例。
- void HelloWorld::menuItem1Callback(Ref*pSender)
- {
- MenuItem* item = (MenuItem*)pSender;
- log("TouchStart Menu Item %p", item);
- }
- void HelloWorld::menuItem2Callback(Ref*pSender)
- {
- MenuItem* item = (MenuItem*)pSender;
- log("TouchHelp Menu Item %p", item);
- }
HelloWorldScene.cpp中init函数中第④行代码是创建一个MenuItemAtlasFont菜单项对象,这种菜单项是基于图片集的菜单项。MenuItemAtlasFont需要将图片集放到资源目录Resources下。在本例中我们是将所有的图片都放到一个Resources下的menu目录中,所以create函数的第二个参数是"menu/tuffy_bold_italic-charmap.png",要求带有menu路径。
还有第⑤行代码Menu* mn = Menu::create(item1, NULL)是创建菜单对象,把之前创建的菜单项添加到菜单中,create函数中有是这些菜单项的数组,最后要用NULL结束。第⑥行代码mn->alignItemsVertically()是设置菜单项垂直对齐。第⑦行代码是this->addChild(mn,1,2)是把菜单对象添加到当前层中。
本书交流讨论网站:http://www.cocoagame.net
《Cocos2d-x实战 C++卷》现已上线,各大商店均已开售:
京东:http://item.jd.com/11584534.html
当当:http://product.dangdang.com/23606265.html
互动出版网:http://product.china-pub.com/3770734
《Cocos2d-x实战 C++卷》源码及样章下载地址:
源码下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1
样章下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1
相关推荐
《cocos2d-x 跑酷源码详解:打造属于你的移动跑酷游戏》 在移动游戏开发领域,cocos2d-x是一款广受欢迎的开源2D游戏引擎,它基于C++,支持iOS、Android以及其他多种平台。本文将深入探讨如何利用cocos2d-x开发一款...
Cocos2d-lua是一款基于Cocos2d-x引擎的轻量级游戏开发框架,它将强大的C++底层引擎与灵活易用的Lua脚本语言相结合,为游戏开发者提供了一个高效、便捷的游戏开发平台。在“Cocos2d-x之Lua核心编程(第二版)_配套代码...
Cocos2d-X提供了一套UI组件,如精灵、按钮、文本等,方便开发者创建和管理游戏界面。 5. **事件处理**:游戏中的用户输入,如触摸屏幕或按键,需要被正确捕获并响应。Cocos2d-X的事件系统可以帮助开发者实现这一...
在游戏开发领域,cocos2d-x是一款广泛使用的开源2D游戏引擎,它基于C++,支持多平台,包括iOS、Android以及桌面平台等。利用cocos2d-x,开发者可以构建高性能的游戏,并且拥有丰富的图形渲染能力。而"开发自己的编辑...
- Cocos2d-x 使用节点(Node)作为基本构建块,节点可以是图片、文本、动画或自定义对象。节点之间可以通过父节点和子节点关系构成树形结构。 - 节点支持各种动作(Actions)和过渡效果(Transitions),使游戏...
Cocos2d-X提供了一些基本的UI组件,如菜单、按钮、文本标签等,开发者可以利用这些组件构建出美观易用的界面。 8. **音频管理**:游戏中的背景音乐和音效可以通过Cocos2d-X的音频引擎进行播放控制,实现游戏音乐的...
《Cocos2d-x高级开发教程制作自己的捕鱼达人》是一份深入探讨Cocos2d-x游戏引擎的资源,包括PDF教程和源代码。Cocos2d-x是一款广泛应用于跨平台2D游戏开发的开源框架,它支持iOS、Android、Windows等多平台,采用C++...
### cocos2d-x 权威指南(高清) —— 关键知识点提炼 #### 一、Cocos2D-x概述 - **定义与特点**:Cocos2D-x是一款开源的游戏开发框架,支持跨平台开发,可以用于创建2D游戏、演示程序和其他图形界面交互应用。该...
### COCOS2d-X by Example Beginner's Guide #### 概述 《COCOS2d-X by Example Beginner's Guide》是一本专为初学者设计的Cocos2d-x游戏开发指南。本书由Roger Engelbert编写,旨在通过一系列实用的例子帮助读者...
Cocos2d-x是一款流行的开源游戏开发框架,它基于C++,并支持多种平台,包括iOS、Android、Windows等。本学习笔记旨在帮助开发者全面掌握Cocos2d-x的C++ API以及游戏项目的开发流程。 一、Cocos2d-x框架基础 Cocos2d...
在Cocos2d-x游戏开发中,模态对话框(Modal Dialog)是一种常见的用户界面元素,用于暂停游戏或应用程序的主线流程,直到用户与对话框交互后才能继续。本项目提供了一个基于Visual Studio 2008的实现,包含完整的...
Cocos2d-X是一款强大的开源2D游戏开发框架,它基于C++,并提供了JavaScript和Lua的绑定,使得开发者可以使用这些语言进行游戏开发。"走出迷宫源码_cocos2d-x版"是一个基于Cocos2d-X的游戏项目,旨在帮助开发者学习...
在Cocos2D-X 2.2.3版本中,UI系统是开发者进行图形用户界面构建的重要工具,使得游戏中的按钮、文本、滑块等交互元素的创建和管理更加便捷。本篇学习笔记将深入探讨Cocos2D-X 2.2.3中的UI系统,帮助你掌握如何高效地...
Cocos2d-Js是Cocos2d-x家族的一员,是一个跨平台的、基于JavaScript的开源游戏引擎,支持创建2D游戏、交互式图书和其他富媒体应用。通过Cocos2d-Js,开发者可以用一种语言编写代码,然后在多个平台上运行,包括Web、...
cocos2d-x是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本文将深入探讨cocos2d-x的核心概念、主要功能和使用方法。 一、cocos2d-x基础 1. 概述:cocos2d-x基于cocos2d-...
CCMenu是Cocos2D-X中用于创建菜单的类,它包含一组CCMenuItem对象。CCMenuItem是菜单项的基本元素,可以是按钮、复选框或切换开关等。你可以通过设置其回调函数来响应用户的触摸事件,实现交互功能。 2. **...
《Cocos2d-x权威指南》是一本深入探讨Cocos2d-x框架的书籍,它为读者提供了全面的Cocos2d-x开发知识。Cocos2d-x是一个跨平台的游戏开发框架,支持iOS、Android、Windows等多个操作系统,采用C++作为主要编程语言,...
【Cocos2d-X 学习指南】 Cocos2d-X 是一款强大的开源游戏开发框架,基于 C++ 开发,支持跨平台,包括 iOS、Android 和 Windows 等多个操作系统。它提供了丰富的功能,使开发者能够轻松创建各种类型的游戏和交互式...
《cocos2d-x基础知识1》 cocos2d-x是一款强大的开源游戏开发框架,它基于C++,并提供了Python、Lua等多种脚本语言接口,让开发者能够快速地创建2D游戏、桌面应用以及HTML5游戏。这个压缩包“Essentials.zip”很可能...
此外,cocos2d-x还提供了丰富的文本渲染功能。例如,LabelTTF用于渲染.ttf格式的静态文本,而LabelBMFont则用于渲染位图字体。 物理引擎(Physics Engine)是一个可选的模块,通过Box2D或Chipmunk物理库提供了碰撞...