閱讀125 返回首頁    go iPhone_iPad_Mac_apple


實例介紹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://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

當當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

  上一篇:go “微信之父”張小龍:微信背後的產品觀
  下一篇:go 扯談網絡編程之Tcp SYN flood洪水攻擊