實例介紹Cocos2d-x開關菜單
開關菜單是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++卷》
本書交流討論網站https://www.cocoagame.net更多精彩視頻課程請關注智捷課堂Cocos課程https://v.51work6.com
歡迎加入Cocos2d-x技術討論群257760386
《Cocos2d-x實戰 C++卷》現已上線各大商店均已開售
京東https://item.jd.com/11584534.html
當當https://product.dangdang.com/23606265.html
互動出版網https://product.china-pub.com/3770734
《Cocos2d-x實戰 C++卷》源碼及樣章下載地址
源碼下載地址https://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1
樣章下載地址https://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1
歡迎關注智捷iOS課堂微信公共平台

最後更新:2017-04-03 12:56:39