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);