关于控件使用时的一些配置,请参见文章:UI开发之控件类-CCControlButton。这里只写出源代码,里边的注释对控件的用法有详细的介绍。
- bool HelloWorld::init()
- {
- bool bRet = false;
- do
- {
- CC_BREAK_IF(! CCLayer::init());
- //设置一个显示字符串的label
- CCLabelTTF * title = CCLabelTTF::create("slider value = 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);
- return bRet;
- }
- //注意这个函数需要传入的俩个参数类型
- void HelloWorld::valueChanged(CCObject * pSender,CCControlEvent controlEvent)
- {
- CCControlSlider * slider = (CCControlSlider *)pSender;
- CCLabelTTF * title = (CCLabelTTF *)this->getChildByTag(1);
- //使用CCLabelTTF的时候尽量不要重新改变它的内容,这里是为了简便起见
- title->setString(CCString::createWithFormat("slider value = %0.02f",slider->getValue())->getCString());
- }