zoukankan      html  css  js  c++  java
  • 实例介绍Cocos2d-x开关菜单

    开关菜单是MenuItemToggle类实现的,它是一种可以进行两种状态切换的菜单。它可以通过下面的函数创建:

     

    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. static MenuItemToggle*createWithCallback  (         
    2.          const ccMenuCallback &      callback,            //菜单操作的回调函数指针  
    3.          MenuItem *    item,                                          //进行切换的菜单项  
    4.     ...  
    5. )    

     

    从第二个参数开始都是MenuItem类的实例对象,它们是开关菜单显示的菜单项,它们可以是文本、图片和精灵类型的菜单项,但是最后不用忘记NULL结尾。

    下面代码是简单形式的文本类型的开关菜单:

     

    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. auto toggleMenuItem =MenuItemToggle::createWithCallback(  
    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对象。

  • 相关阅读:
    Win10 VMware虚拟机无法打开内核设备“\.Globalvmx86“
    搜索算法总结
    经典排序算法
    Markdown Test
    PAT L2-020 功夫传人【BFS】
    PAT l2-018 多项式A除以多项式B 【多项式+模拟】
    PAT l2-010 排座位 【并查集】
    二叉树的前中后序遍历关系 【非原创】
    PAT L2-005. 集合相似度 【stl set】
    PAT L2-004. 这是二叉搜索树吗?【前序遍历转化为后序遍历】
  • 原文地址:https://www.cnblogs.com/iOS-Blog/p/3725241.html
Copyright © 2011-2022 走看看