您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-x学习笔记(十一)之 菜单类CCMenu

2013-08-22 15:18 246 查看
  菜单类在游戏中有着非常重要的地位,CCMenu 是一个菜单项的容器,用来装载各种菜单项。菜单项可以是图片、系统字,或者自定义的字体。菜单的使用示例如下:

//创建菜单项
CCMenuItemImage* item1 = CCMenuItemImage::create(s_PlayNormal, s_
PlaySelect, this, menu_selector(MenuLayer2::menuCallback));
CCMenuItemImage* item2 = CCMenuItemImage::create(s_HighNormal, s_
HighSelect, this, menu_selector(MenuLayer2::menuCallbackOpacity) );
CCMenuItemImage* item3 = CCMenuItemImage::create(s_AboutNormal, s_
AboutSelect, this, menu_selector(MenuLayer2::menuCallbackAlign) );
item1->setScaleX( 1.5f );
item2->setScaleX( 0.5f );
item3->setScaleX( 0.5f );
//创建菜单,并把菜单项加入到菜单容器中
CCMenu* menu = CCMenu::create(item1, item2, item3, NULL);
CCSize s = CCDirector::sharedDirector()->getWinSize();
//设置菜单类的位置
menu->setPosition(ccp(s.width/2, s.height/2));
//添加到场景中
addChild(menu, 0);


  菜单类还提供了alignItemsVertically 和align-ItemsHorizontally 等函数。一种是alignItems-Horizontally 水平对齐,另外alignItemsHorizontallyWithPadding 是留空间水平对齐。

另一种是alignItemsVertically垂直对齐。

  下面我们就一起来看一下菜单项。菜单项CCMenuItem是一个基类,它的子类可以加入CCMenu中形成菜单。CCMenuItem类的继承关系如下:

  CCMenuItemLabel、CCMenuItemSprite、CCMenuItemToggle-->CCMenuItem。

  CCMenuItemAtlasFont、CCMenuItemFont-->CCMenuItemLabel。 CCMenuItemImage-->CCMenuItemSprite。

  1、标签菜单项

  使用字体定义的菜单项,包括CCMenuItemAtlasFont和CCMenuItemFont两种定义菜单项字体的方式。其中CCMenuItemFont是通过设定字体名称来设置字体的,这个字体是系统自带的。

  CCMenuItemFont使用如下:

//设置字号
CCMenuItemFont::setFontSize( 30 );
//设置字体。 支持的字体包括Courier New、Marker Felt、American Typewriter和Arial等。
CCMenuItemFont::setFontName( "Courier New" );
//第一个参数是文字内容、第二个参数是执行回调函数的目标类、第三个参数是回调函数的名称传入选择器中,当按钮被按下的时候将调用这个回调函数。
CCMenuItemFont  *item = CCMenuItemFont::create( "I Menu Item Font", this, menu_selector( 回调函数 ) );


  CCMenuItemAtlasFont则是通过字体配置PNG文件的CCLabelAtlas或者是FNT类型文件的CCLabelBMFont,即配置文件所对应的图片,使用示例如下:

//创建CCLabelAtlas实例
CCLabelAtlas* labelAtlas = CCLabelAtlas::create( "0123456789", "fonts/labelatlas.png", 16, 24, "." );
//创建CCMenuItemLabel 参数分别表示:文字渲染类CCLabelAtlas、执行回调函数的目标类、回调函数的名称,当按钮被按下的时候将回调这个回调函数。
CCMenuItemlabel* item = CCMenuItemLabel::create( labelAtlas, this, menu_selector(回调函数));

//创建文字渲染类CCLabelBMFont
CCLabelBMFont* label = CCLabelBMFont::create( "configuration", "fonts/bitmapFont.fnt" );

CCMenuItemlabel* item1 = CCMenuItemLabel::create( label, this, menu_selector(回调函数));


  2、精灵菜单项

  精灵菜单项CCMenuItemSprite的特点是可以封装图片进入菜单项。使用示例如下:

CCSprite* spriteNormal = CCSprite::create( s_MenuItem, CCRectMake(0, 23*2,115,23));
CCSprite* spriteSelected = CCSprite::create( s_MenuItem, CCRectMake(0, 23*1,115,23));
CCSprite* spriteDisabled = CCSprite::create( s_MenuItem, CCRectMake(0, 23*0,115,23));

//参数分别为:普通状态下的按钮、选中状态下的按钮、无效状态下的按钮、执行回调函数的目标类、调用这个回调函数。
CCMenuItemSprite* item = CCMenuItemSprite::create( spriteNormal, spriteSelected, spriteDisabled, this, menu_selector(回调函数) );


  CCMenuItemSprite的子类图片菜单项CCMenuItemImage,使用示例如下:

CCMenuItemImage* item = CCMenuItemImage::create( "normal.png", "selected.png", "disabled.png", this, menu_selector(回调函数) );


  3、触发器菜单项

  触发器菜单项CCMenuItemToggle可以将任意的菜单项传进去,作为一个触发器按钮式的开关,使用示例如下:

//创建触发器菜单项实例,参数如下:执行回调函数的目标类、回调函数的名称、后面可以传入菜单项,以NULL结束,这样在按下菜单项时,还会在这些菜单项中切换,适合做游戏音乐开关等。
CCMenuItemToggle* item = CCMenuItemToggle::create( this, menu_selector(回调函数), CCMenuItemFont::create( "On" ) ,
CCMenuItemFont::create( "Off" ), NULL );


  好了,菜单、菜单项以及其菜单项的子类就先介绍到这里了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: