cocos2d-x之button

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);  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章