生活随笔
收集整理的這篇文章主要介紹了
实例介绍Cocos2d-x开关菜单
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
開(kāi)關(guān)菜單是MenuItemToggle類實(shí)現(xiàn)的,它是一種可以進(jìn)行兩種狀態(tài)切換的菜單。它可以通過(guò)下面的函數(shù)創(chuàng)建:
?
[html]?view plaincopy
static?MenuItemToggle*createWithCallback??(??????????????????const?ccMenuCallback?&??????callback,????????????//菜單操作的回調(diào)函數(shù)指針???????????MenuItem?*????item,??????????????????????????????????????????//進(jìn)行切換的菜單項(xiàng)??????...??)???? ?
?
從第二個(gè)參數(shù)開(kāi)始都是MenuItem類的實(shí)例對(duì)象,它們是開(kāi)關(guān)菜單顯示的菜單項(xiàng),它們可以是文本、圖片和精靈類型的菜單項(xiàng),但是最后不用忘記NULL結(jié)尾。
下面代碼是簡(jiǎn)單形式的文本類型的開(kāi)關(guān)菜單:
?
[html]?view plaincopy
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);?? ?
下面我們通過(guò)一個(gè)實(shí)例介紹一下其它的復(fù)雜類型的開(kāi)關(guān)菜單的使用,這個(gè)實(shí)例如下圖所示,是一個(gè)游戲音效和背景音樂(lè)設(shè)置界面,我們可以通過(guò)開(kāi)關(guān)菜單實(shí)現(xiàn)這個(gè)功能,我們的美術(shù)設(shè)計(jì)師為每一個(gè)設(shè)置項(xiàng)目(音效和背景音樂(lè))分別準(zhǔn)備了兩個(gè)圖片。
?
?
下面我們看看實(shí)例代碼的實(shí)現(xiàn),HelloWorldScene.cpp中使用MenuItemSprite菜單項(xiàng)的代碼如下:
?
[html]?view plaincopy
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)));??????????//音樂(lè)?????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;??}?? ?
?
在上面代碼第①是創(chuàng)建音效開(kāi)的圖片菜單項(xiàng),第②行是創(chuàng)建音效關(guān)的圖片菜單項(xiàng),第③行代碼是通過(guò)createWithCallback函數(shù)創(chuàng)建開(kāi)關(guān)菜單項(xiàng)MenuItemToggle。類似的第④~⑥創(chuàng)建了背景音樂(lè)開(kāi)關(guān)菜單項(xiàng)。第⑦行代碼是通過(guò)上面創(chuàng)建的開(kāi)關(guān)菜單項(xiàng)創(chuàng)建Menu對(duì)象。
轉(zhuǎn)載于:https://www.cnblogs.com/iOS-Blog/p/3725241.html
總結(jié)
以上是生活随笔為你收集整理的实例介绍Cocos2d-x开关菜单的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。