cocos2d-x-3.0学习笔记之如何创建开关菜单

来源:互联网 发布:健康风险评估软件 编辑:程序博客网 时间:2024/05/01 19:53

开关菜单的菜单项类是MenuItemToggle,它是一种可以进行两种状态切换的的菜单项,其创建函数如下:

static MenuItemToggle *createWithCallback(       const ccMenuCallback &callback, //菜单操作的回调函数指针       MenuItem *utem,                 //进行切换的菜单项       ...) 

由上可见该创建函数有着不定参数,且从第二个参数开始就是MenuItem类的实例对象,即开关菜单显示的菜单项,可以为文本,图片或精灵类型的菜单项。
先通过文本创建一个简单的开关菜单

MenuItemToggle *toggleMenuItem = MenuItemToggle ::createWithCallback(CC_CALLBACK_0(HelloWorld::menuItemCallback,this),       MenuItemFont::create("On"),       MenuItemFont::create("Off"),       NULL);Menu *menu = Menu::create(toggleMenuItem ,NULL);this->addChild(menu);       //回调函数 void HellWorld::menuItemCall(){   //实现回调内容}  

这样一个简单的开关菜单就设计好了,下面看一个稍微复杂的例子,做一个游戏音量、音效设置页面

bool HelloWorld::init(){    if(!Layer::init())    {        return false;    }   Size visibleSize = Director::getInstance()->getVisibleSize();   Vec2 origin = Director::getInstance()->getVisibleOrigin();   Sprite *bg = Sprite::create("background.png");   bg->setPosition(Vec2(origin.x + visibleSize.width/2,origin.y + visibleSize.hight/2));   this->addChild(bg);  //音效  MenuItemImage *soundOnImage = MenuItemImage::create(         "on.png","on.png");  MenuItemImage *soundOffImage = MenuItemImage::create(         "off.png","off.png");  MenuItemToggle *soundToggleMenuItem = MenuItemToggle         ::createWithCallback(CC_CALLBACK_0(HelloWorld::           menuSoundCallback,this),       soundOnImage ,       soundOffImage,       NULL); soundToggleMenuItem->setPosition(Director::getInstance()->convertToGL(800,200));//音乐  MenuItemImage *musicOnImage = MenuItemImage::create(         "on.png","on.png");  MenuItemImage *musicOffImage = MenuItemImage::create(         "off.png","off.png");  MenuItemToggle *musicToggleMenuItem = MenuItemToggle         ::createWithCallback(CC_CALLBACK_0(HelloWorld::           menuMusicCallback,this),       musicOnImage ,       musicOffImage,       NULL); musicToggleMenuItem->setPosition(Director::getInstance()->convertToGL(600,150));//创建OK按钮auto okMenuItem = MenuItemImage::create("down.png","up.png",CC_CALLBACK_0(HelloWorld::           menuOKCallback,this));okMenuItem->setPosition(Director::getInstance()->convertToGL(300,550));Menu *menu = Menu::create(soundToggleMenuItem,musicToggleMenuItem,okMenuItem,NULL);this->addChild(menu);return true;}
0 0
原创粉丝点击