今天我们来学习另一个扩展库控件CCControlSlider, 这是一个滑动条控件, 我们来看看具体的用法,
用法:
CCControlSlider::create( 背景精灵, 滑过区域精灵, 滑块精灵);
老规矩, 在网上下载个滑动条的素材:
然后把我们喜欢的抠出来:
我们来创建一个CCControlSlider对象:
刚刚说了是扩展库里面的, 所以#include "cocos-ext.h"/USING_NS_CC_EXT;是不可少的哦
CCControlSlider* cs = CCControlSlider::create( "bg.png", "xr.png", "bt.png");
cs->setPosition( ccp( visibleSize.width / 2, visibleSize.height / 2));
addChild( cs, 0, 101);
我们运行看看, ( 旁白: 骗子, 大骗子, 根本就不能动啊)
的确, 我们现在都CCControlSlider是不能动, 因为我们没有设置它的最大值, 最小值之类的, 所以我们来看看比较常用的函数
setMinimumValue( float); //设置最小值
setMaximumValue( float); //设置最大值
setValue( float); //设置当前值
setMinimumAllowedValue( float); //设置最小可滑动值
setMaximumAllowedValue( float); //设置最大可滑动值
getValue(); //获取当前值
我们把加上去看看效果:
cs->setMinimumValue( 0.0f); //设置最小值
cs->setMaximumValue( 100.0f); //设置最大值
cs->setValue( 50.0f); //设置当前值
cs->setMinimumAllowedValue( 20.0f); //设置最小可滑动值
cs->setMaximumAllowedValue( 80.0f); //设置最大可滑动值
再来看看效果:
是不是就可以自由滑动了, 但是两头不能到, 对不对,
我们继续, 来添加一个回调函数:
和昨天一样的哦, 所以我就偷个懒, 没有删除昨天的, 直接在上面修改了( 旁白: 简直无药可救了)
void callMySwitch( CCObject* pSender, CCControlEvent controlEvent);
实现它, 在实现之前, 我们还是和昨天一样, 在init里面创建一个标签, 用来显示当前值, 顺便也把事件和函数绑定了:
CCLabelTTF* ttf = CCLabelTTF::create( "50.0", "Arial", 24);
ttf->setPosition( ccp( visibleSize.width / 2, visibleSize.height / 2 - 50));
addChild( ttf, 0, 102);
//绑定事件
cs->addTargetWithActionForControlEvents( this,
cccontrol_selector( HelloWorld::callMySwitch),
CCControlEventValueChanged); //值发生改变
void HelloWorld::callMySwitch( CCObject* pSender, CCControlEvent controlEvent)
{
char buff[10] = {0};
CCControlSlider* cs = (CCControlSlider*)this->getChildByTag( 101);
CCLabelTTF* ttf = (CCLabelTTF*)this->getChildByTag( 102);
std::sprintf( buff, "%f", cs->getValue());
ttf->setString( buff);
}
看看效果, 是不是下面的值跟着滑动条在改变啊, 最小20, 最大80
嘿嘿, 今天就到此为止了哦