Cocos2d-x UI开发之CCControlSlider控件类使用实例
关于控件使用时的一些配置,请参见文章:UI开发之控件类-CCControlButton。这里只写出源代码,里边的注释对控件的用法有详细的介绍。
boolHelloWorld::init()
{
boolbRet=false;
do
{
CC_BREAK_IF(!CCLayer::init());
//设置一个显示字符串的label
CCLabelTTF*title=CCLabelTTF::create("slidervalue=0.00","Arial",32);
title->setPosition(ccp(240,200));
//设置label的tag为1,方便以后获取
this->addChild(title,0,1);
//这三张图片分别是底部,进度条,控制按钮
CCControlSlider*slider=CCControlSlider::create("sliderTrack.png","sliderProgress.png",
"sliderThumb.png");
//设置slider的最大值最小值
slider->setMaximumValue(100);
slider->setMinimumValue(0);
//为slider添加事件监听函数
slider->addTargetWithActionForControlEvents(this,cccontrol_selector(HelloWorld::valueChanged),
CCControlEventValueChanged);
//设置位置
slider->setPosition(ccp(240,160));
this->addChild(slider);
//使用CCControlSlider实现血量条,只要将第三个控制按钮改为透明的就可以了,就会貌似血量条了
CCControlSlider*slider2=CCControlSlider::create("sliderTrack.png","progress.png","sliderThumb2.png");
//通过以下函数使得认为的不能改变它的值
slider2->setTouchEnabled(false);
slider2->setMaximumValue(100);
slider2->setMinimumValue(0);
//可以添加事件处理函数,在事件处理函数中改变它的value
slider2->setValue(100);
slider2->setPosition(ccp(240,100));
this->addChild(slider2);
bRet=true;
}while(0);
returnbRet;
}
//注意这个函数需要传入的俩个参数类型
voidHelloWorld::valueChanged(CCObject*pSender,CCControlEventcontrolEvent)
{
CCControlSlider*slider=(CCControlSlider*)pSender;
CCLabelTTF*title=(CCLabelTTF*)this->getChildByTag(1);
//使用CCLabelTTF的时候尽量不要重新改变它的内容,这里是为了简便起见
title->setString(CCString::createWithFormat("slidervalue=%0.02f",slider->getValue())->getCString());
}