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