实例介绍Cocos2d-x开关菜单
2014-05-13 11:57
330 查看
开关菜单是MenuItemToggle类实现的,它是一种可以进行两种状态切换的菜单。它可以通过下面的函数创建:
static MenuItemToggle*createWithCallback ( const ccMenuCallback & callback, //菜单操作的回调函数指针 MenuItem * item, //进行切换的菜单项 ... )
从第二个参数开始都是MenuItem类的实例对象,它们是开关菜单显示的菜单项,它们可以是文本、图片和精灵类型的菜单项,但是最后不用忘记NULL结尾。
下面代码是简单形式的文本类型的开关菜单:
auto toggleMenuItem =MenuItemToggle::createWithCallback( CC_CALLBACK_1(HelloWorld::menuItem1Callback,this), MenuItemFont::create("On" ), MenuItemFont::create("Off"), NULL ); Menu* mn = Menu::create(toggleMenuItem,NULL); this->addChild(mn);
下面我们通过一个实例介绍一下其它的复杂类型的开关菜单的使用,这个实例如下图所示,是一个游戏音效和背景音乐设置界面,我们可以通过开关菜单实现这个功能,我们的美术设计师为每一个设置项目(音效和背景音乐)分别准备了两个图片。
下面我们看看实例代码的实现,HelloWorldScene.cpp中使用MenuItemSprite菜单项的代码如下:
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); //音效 auto soundOnMenuItem = MenuItemImage::create( "menu/on.png", "menu/on.png"); ① auto soundOffMenuItem = MenuItemImage::create( "menu/off.png", "menu/off.png"); ② auto soundToggleMenuItem = MenuItemToggle::createWithCallback( CC_CALLBACK_1(HelloWorld::menuSoundToggleCallback,this), soundOnMenuItem, soundOffMenuItem, NULL); ③ soundToggleMenuItem->setPosition( Director::getInstance()->convertToGL(Point(818,220))); //音乐 auto musicOnMenuItem =MenuItemImage::create( "menu/on.png", "menu/on.png"); ④ automusicOffMenuItem =MenuItemImage::create( "menu/off.png", "menu/off.png"); ⑤ auto musicToggleMenuItem = MenuItemToggle::createWithCallback( CC_CALLBACK_1(HelloWorld::menuMusicToggleCallback,this), musicOnMenuItem, musicOffMenuItem, NULL ); ⑥ musicToggleMenuItem->setPosition( Director::getInstance()->convertToGL(Point(818,362))); //Ok按钮 autookMenuItem = MenuItemImage::create( "menu/ok-down.png", "menu/ok-up.png"); okMenuItem->setPosition(Director::getInstance()->convertToGL(Point(600,510))); Menu* mn = Menu::create(soundToggleMenuItem, musicToggleMenuItem,okMenuItem, NULL); ⑦ mn->setPosition(Point::ZERO); this->addChild(mn); return true; }
在上面代码第①是创建音效开的图片菜单项,第②行是创建音效关的图片菜单项,第③行代码是通过createWithCallback函数创建开关菜单项MenuItemToggle。类似的第④~⑥创建了背景音乐开关菜单项。第⑦行代码是通过上面创建的开关菜单项创建Menu对象。
更多内容请关注最新Cocos图书《Cocos2d-x实战 C++卷》本书交流讨论网站:http://www.cocoagame.net
更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com
欢迎加入Cocos2d-x技术讨论群:257760386
《Cocos2d-x实战 C++卷》现已上线,各大商店均已开售:京东:http://item.jd.com/11584534.html亚马逊:http://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU当当: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欢迎关注智捷iOS课堂微信公共平台
相关文章推荐
- 实例介绍Cocos2d-x开关菜单
- 实例介绍Cocos2d-x开关菜单
- 实例介绍Cocos2d-x精灵菜单和图片菜单
- 实例介绍Cocos2d-x精灵菜单和图片菜单
- 实例介绍Cocos2d-x物理引擎:HelloPhysicsWorld
- Cocos2d-x中__Dictionary容器以及实例介绍
- Cocos2d-x中__Dictionary容器以及实例介绍
- cocos2d-x 3.0 图片按钮,文字按钮,菜单按钮,单选按钮,开关按钮
- Cocos2d-x中Vector<T>容器以及实例介绍
- 实例介绍Cocos2d-x中Box2D物理引擎:碰撞检测
- 实例介绍Cocos2d-x中Box2D物理引擎:碰撞检测
- 实例介绍Cocos2d-x中Box2D物理引擎:使用关节
- 实例介绍Cocos2d-x中Box2D物理引擎:碰撞检测
- 实例介绍Cocos2d-x中Box2D物理引擎:HelloBox2D
- 实例介绍Cocos2d-x中Box2D物理引擎:使用关节
- cocos2d-x 菜单CCMenu和CCMenuItemImage应用实例
- Cocos2d-x中__Dictionary容器以及实例介绍
- 实例介绍Cocos2d-x中Box2D物理引擎:使用关节
- 实例介绍Cocos2d-x中Box2D物理引擎:HelloBox2D
- 范例介绍Cocos2d-x精灵菜单和图片菜单