导航

cocos2d-x 菜单

Posted on 2013-11-15 23:39  ADaii  阅读(411)  评论(0编辑  收藏  举报

菜单在游戏中是非常常见的控件之一。下面来分析下在cocos2dx中有那些菜单。

一共有六种菜单。

CCMenu在创建时需要使用CCMenuItem来创建。

 

CCMenu继承自CCLayer,是一个菜单管理选择画面层,该画面以Menu对象为集合类,由MenuItem类实例组成各种按钮。CCMenu类提供的方法主要用来按横向、竖向或者多行列排序展示MenueItem的类实例。同时,CCMenu只支持CCMenuItem节点作为它的子节点。

注意 CCMenuItem是基础类,不能直接用来创建菜单,它的作用主要是设置按钮状态以及处理回调方法。需要使用CCMenuItem的子类来创建定制菜单项。

 

//----CCMenuItemFont
    CCMenuItemFont*  itemFont = CCMenuItemFont::create("开始游戏", this,menu_selector(HelloWorld::menuFun));
    itemFont->setPosition(ccp(-120,80));
    
    //----CCMenuItemImage
    CCMenuItemImage* imageItem = CCMenuItemImage::create("CloseNormal.png","CLoseSelected.png", this,menu_selector(HelloWorld::menuFun));
    imageItem->setPosition(ccp(-20,80));
         
    //----CCMenuItemLabel
    CCLabelTTF * lableTTF = CCLabelTTF::create("返回主菜单", "Helvetica", 20); 
    CCMenuItemLabel * labelItem =CCMenuItemLabel::create(lableTTF,this,menu_selector(HelloWorld::menuFun));
    labelItem->setPosition(ccp(80,80));

    //----CCMenuItemSprite
    CCSprite* spNor = CCSprite::create("Icon.png");
    spNor->setColor(ccc3(255, 255, 0 ));
    CCSprite* spSelected =CCSprite::create("Icon.png");
    CCMenuItemSprite* spriteItem = CCMenuItemSprite::create(spNor,spSelected, this,menu_selector(HelloWorld::menuFun));
    spriteItem->setPosition(ccp(-80,-20));
    
    
    //----CCMenuItemToggle
    CCMenuItemFont * fontItem1 = CCMenuItemFont::create("音乐开");
    CCMenuItemFont * fontItem2 = CCMenuItemFont::create("音乐关");
    CCMenuItemToggle* toggleItem = CCMenuItemToggle::createWithTarget(this,menu_selector(HelloWorld::menuFun), fontItem1,fontItem2,NULL);
    toggleItem->setPosition(ccp(20,-20));
    

CCMenuItemAtlasFont

CCMenuItemAtlasFont直接继承自CCMenuItemLabel,将一个CCLabelAtlas转变为一个菜单项,增加选中时的文字放大效果


    CCMenu* menu = CCMenu::create(itemFont,imageItem,labelItem,spriteItem,toggleItem,NULL);
    addChild(menu);