實例介紹Cocos2d-x開關菜單

開關菜單是MenuItemToggle類實現的,它是一種能夠進行兩種狀態切換的菜單。它能夠經過下面的函數建立:

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片html

  1. static MenuItemToggle*createWithCallback  (         函數

  2.          const ccMenuCallback &      callback,            //菜單操做的回調函數指針  this

  3.          MenuItem *    item,                                          //進行切換的菜單項  spa

  4.     ...  .net

  5. )    設計


從第二個參數開始都是MenuItem類的實例對象,它們是開關菜單顯示的菜單項,它們能夠是文本、圖片和精靈類型的菜單項,可是最後不用忘記NULL結尾。指針

下面代碼是簡單形式的文本類型的開關菜單:code

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片orm

  1. auto toggleMenuItem =MenuItemToggle::createWithCallback(  htm

  2.                                         CC_CALLBACK_1(HelloWorld::menuItem1Callback,this),  

  3.                        MenuItemFont::create("On" ),  

  4.                        MenuItemFont::create("Off"),  

  5.                        NULL );     

  6. Menu* mn = Menu::create(toggleMenuItem,NULL);  

  7. this->addChild(mn);  


下面咱們經過一個實例介紹一下其它的複雜類型的開關菜單的使用,這個實例以下圖所示,是一個遊戲音效和背景音樂設置界面,咱們能夠經過開關菜單實現這個功能,咱們的美術設計師爲每個設置項目(音效和背景音樂)分別準備了兩個圖片。

 

下面咱們看看實例代碼的實現,HelloWorldScene.cpp中使用MenuItemSprite菜單項的代碼以下:

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. bool HelloWorld::init()  

  2. {  

  3.    if ( !Layer::init() )  

  4.    {  

  5.        return false;  

  6.    }  

  7.      

  8.    Size visibleSize = Director::getInstance()->getVisibleSize();  

  9.    Point origin = Director::getInstance()->getVisibleOrigin();  

  10.    

  11.    Sprite *bg = Sprite::create("menu/background.png");  

  12.    bg->setPosition(Point(origin.x + visibleSize.width/2,  

  13.                              origin.y +visibleSize.height /2));  

  14.    this->addChild(bg);  

  15.    

  16.     //音效  

  17.    auto soundOnMenuItem = MenuItemImage::create(  

  18.                             "menu/on.png",  

  19.                             "menu/on.png");                                                                        ①  

  20.    auto soundOffMenuItem = MenuItemImage::create(  

  21.                             "menu/off.png",  

  22.                             "menu/off.png");                                                                        ②  

  23.      

  24.    auto soundToggleMenuItem = MenuItemToggle::createWithCallback(  

  25.                        CC_CALLBACK_1(HelloWorld::menuSoundToggleCallback,this),  

  26.                                                                             soundOnMenuItem,  

  27.                                                                             soundOffMenuItem,  

  28.                                                                             NULL);                                                            ③  

  29.    

  30.         soundToggleMenuItem->setPosition(  

  31.                                                          Director::getInstance()->convertToGL(Point(818,220)));  

  32.      

  33.    //音樂  

  34.    auto musicOnMenuItem  =MenuItemImage::create(  

  35.                             "menu/on.png",  

  36.                             "menu/on.png");                                                                        ④  

  37.         automusicOffMenuItem  =MenuItemImage::create(  

  38.                             "menu/off.png",  

  39.                             "menu/off.png");                                                                        ⑤  

  40.    auto musicToggleMenuItem = MenuItemToggle::createWithCallback(  

  41.                                  CC_CALLBACK_1(HelloWorld::menuMusicToggleCallback,this),  

  42.                                                    musicOnMenuItem,  

  43.                                                    musicOffMenuItem,  

  44.                                                    NULL );                                        ⑥  

  45.         musicToggleMenuItem->setPosition(  

  46.                                                          Director::getInstance()->convertToGL(Point(818,362)));  

  47.    

  48.     //Ok按鈕  

  49.         autookMenuItem  = MenuItemImage::create(  

  50.                             "menu/ok-down.png",  

  51.                             "menu/ok-up.png");  

  52.         okMenuItem->setPosition(Director::getInstance()->convertToGL(Point(600,510)));  

  53.     

  54.    Menu* mn = Menu::create(soundToggleMenuItem,  

  55.                                                   musicToggleMenuItem,okMenuItem, NULL);                                   ⑦  

  56.    

  57.    mn->setPosition(Point::ZERO);  

  58.    this->addChild(mn);  

  59.      

  60.    return true;  

  61. }  


在上面代碼第①是建立音效開的圖片菜單項,第②行是建立音效關的圖片菜單項,第③行代碼是經過createWithCallback函數建立開關菜單項MenuItemToggle。相似的第④~⑥建立了背景音樂開關菜單項。第⑦行代碼是經過上面建立的開關菜單項建立Menu對象。

相關文章
相關標籤/搜索