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);  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值