• 实例介绍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)));
     
        //Okbutton
            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++卷》
    本书交流讨论站点:http://www.cocoagame.net
    很多其它精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com
    欢迎增加Cocos2d-x技术讨论群:257760386


    《Cocos2d-x实战 C++卷》现已上线。各大商店均已开售:

    京东:http://item.jd.com/11584534.html

    亚马逊:http://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

    当当:http://product.dangdang.com/23606265.html

    互动出版网:http://product.china-pub.com/3770734

    《Cocos2d-x实战 C++卷》源代码及样章下载地址:

    源代码下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1 

    样章下载地址:http://51work6.com/forum.php?

    mod=viewthread&tid=1157&extra=page%3D1

    欢迎关注智捷iOS课堂微信公共平台


     

  • 相关阅读:
    Linux网络与服务管理
    输入两个数据,如果输入数据之和为5的倍数,那么就算是输了,停止游戏;如果赢了,接着输入数据。
    switch语句
    计算一个三位数的个位,十位,百位之和
    单分支和双分支选择结构程序设计
    register变量
    static变量
    auto变量
    长双精度类型
    双精度类型变量
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6875379.html
Copyright © 2020-2023  润新知