Cocos2d-x学习笔记(十一)之 菜单类CCMenu
2013-08-22 15:18
246 查看
菜单类在游戏中有着非常重要的地位,CCMenu 是一个菜单项的容器,用来装载各种菜单项。菜单项可以是图片、系统字,或者自定义的字体。菜单的使用示例如下:
菜单类还提供了alignItemsVertically 和align-ItemsHorizontally 等函数。一种是alignItems-Horizontally 水平对齐,另外alignItemsHorizontallyWithPadding 是留空间水平对齐。
另一种是alignItemsVertically垂直对齐。
下面我们就一起来看一下菜单项。菜单项CCMenuItem是一个基类,它的子类可以加入CCMenu中形成菜单。CCMenuItem类的继承关系如下:
CCMenuItemLabel、CCMenuItemSprite、CCMenuItemToggle-->CCMenuItem。
CCMenuItemAtlasFont、CCMenuItemFont-->CCMenuItemLabel。 CCMenuItemImage-->CCMenuItemSprite。
1、标签菜单项
使用字体定义的菜单项,包括CCMenuItemAtlasFont和CCMenuItemFont两种定义菜单项字体的方式。其中CCMenuItemFont是通过设定字体名称来设置字体的,这个字体是系统自带的。
CCMenuItemFont使用如下:
CCMenuItemAtlasFont则是通过字体配置PNG文件的CCLabelAtlas或者是FNT类型文件的CCLabelBMFont,即配置文件所对应的图片,使用示例如下:
2、精灵菜单项
精灵菜单项CCMenuItemSprite的特点是可以封装图片进入菜单项。使用示例如下:
CCMenuItemSprite的子类图片菜单项CCMenuItemImage,使用示例如下:
3、触发器菜单项
触发器菜单项CCMenuItemToggle可以将任意的菜单项传进去,作为一个触发器按钮式的开关,使用示例如下:
好了,菜单、菜单项以及其菜单项的子类就先介绍到这里了。
//创建菜单项 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 );
好了,菜单、菜单项以及其菜单项的子类就先介绍到这里了。
相关文章推荐
- Cocos2d-x学习笔记(十一)CCMenu详解
- cocos2d-x学习笔记-CCMenu和CCMenuItem详解
- 【Cocos2d-X开发学习笔记】第09期:渲染框架之菜单类(CCMenu)的使用
- cocos2d-x学习笔记-CCMenu和CCMenuItem详解
- Cocos2d-x 3.2 学习笔记(十一)Game 2048
- cocos2d-x学习笔记-CCMenu和CCMenuItem详解
- 我的Cocos2d-x学习笔记(十一)触摸、触摸优先级
- cocos2d-x学习笔记(十一)c++与lua交互回调函数的处理
- 【Cocos2d-X开发学习笔记】第09期:渲染框架之菜单类(CCMenu)的使用
- Cocos2d-x学习笔记(10)(CCMenu菜单)
- cocos2d-x 菜鸟学习笔记十一(触摸控制精灵)
- cocos2d-x学习笔记-CCMenu和CCMenuItem详解
- 我的Cocos2d-x学习笔记(十四)菜单(CCMenu)、菜单项(CCMenuItem)及菜单项子类
- cocos2d学习笔记 CCMenu与CocosDenshion
- cocos2d学习笔记(五)CCMenu与CocosDenshion
- Cocos2d-x学习笔记(10)(CCMenu菜单)
- cocos2d-x学习笔记-CCMenu和CCMenuItem详解
- Cocos2d-x学习笔记(十一)-------->Cocos2d-x的内存管理
- Cocos2d-x 3.0学习笔记】 AnchorPoint 和Position 关系
- Cocos2d-x学习笔记(十三)CCLabel详解