button按钮在游戏中用的很常见,通常都是一个功能的入口,要是没有可以操作的按钮,那么游戏基本上仅限于观看,显然不是我们想要的结果
按钮的实现有很多种,有的时候一个带有文字的图标可以实现按钮,sprite也可以,image同样可以,只是在创建他们的时候绑定一个方法,即可实现,下面就各种实现按钮的方法做以下总结:
利用sprite实现按钮
CCSprite* spriteNormal=CCSprite::spriteWithFile(s_MenuItem,CCRectMake(0,23*2,115,23));
CCSprite*spriteSelected=CCSprite::spriteWithFile(s_MenuItem,CCRectMake(0,23*1,115,23));
CCSprite* spriteDisabled=CCSprite::spriteWithFile(s_MenuItem,CCRectMake(0,23*0,115,23));
CCMenuItemSprite* item1 =CCMenuItemSprite::itemFromNormalSprite(spriteNormal,spriteSelected, spriteDisabled, this, menu_selector(MenuLayer1::menuCallback))
用image创建按钮
// 利用Image建立按钮
CCMenuItem* item2 =CCMenuItemImage::itemFromNormalImage("select.png", "not_select.png",this,menu_selector(MenuLayer1::menuCallback2) );
// Label Item(LabelAtlas)(利用图片文件,建立Label按钮,后三个参数:长、宽、起始字符
CCLabelAtlas* labelAtlas =CCLabelAtlas::labelWithString("0124", "fonts/fps.png", 16, 24, '.');
CCMenuItemLabel* item3 =CCMenuItemLabel::itemWithLabel(labelAtlas, this,menu_selector(MenuLayer1::menuCallbackDisabled) );
item3->setDisabledColor( ccc3(32,32,64));
item3->setColor(ccc3(200,200,255) );
创建label按钮
// Font Item(直接创建Label按钮,利用系统默认有的字体
CCMenuItemFont *item4 =CCMenuItemFont::itemFromString("toggle",this,menu_selector(Menu::func));
item4->setFontSizeObj(20);
item4->setFontName("Marker Felt");
用文字创建按钮
// Label Item(CCLabelBMFont)利用自己的字体文件
CCLabelBMFont* label =CCLabelBMFont::labelWithString("configuration", "fonts/bitmapFont.fnt");
CCMenuItemLabel* item5 =CCMenuItemLabel::itemWithLabel(label, this, menu_selector(Menu1::func));
建立触发式的按钮(一个按钮可以实现两个操作,一般是两种状态的切换)
//建立触发式的按钮
CCMenuItemToggle* item1 =CCMenuItemToggle::itemWithTarget( this, menu_selector(MenuLayer4::menuCallback),
CCMenuItemFont::itemFromString("On" ),
CCMenuItemFont::itemFromString( "Off"),
NULL );
一般来说,用iamge创建按钮是比较常见的,但是cocos2d自己有按钮类(UIButton),里面实现的更多
CCSize size = CCDirector::sharedDirector()->getWinSize();
CCScale9Sprite *psc9Selected = CCScale9Sprite::create("btn-about-selected.png");
CCLabelTTF *label = CCLabelTTF::create("My Button", "Marker Felt", 30);
CCScale9Sprite *psc9ButtonBG = CCScale9Sprite::create("extensions/buttonHighlighted.png");
CCControlButton *button = CCControlButton::create(label, psc9ButtonBG);
button->setPosition(ccp(500.0f, size.height / 3.0f));
button->setBackgroundSpriteForState(psc9Selected, CCControlStateSelected);
button->setTitleColorForState(ccWHITE, CCControlStateHighlighted);
button->addTargetWithActionForControlEvents(this, cccontrol_selector(MyBottonBastLayer::buttonCallBack), //加事件
CCControlEventTouchDown);
this->addChild(button);