被搭建安卓平台弄的够呛。周六下午终于有时间可以发博客里。
继续控件(下):
3、ControlStepper
bool ControlStepper::init() { CCSize size = CCDirector::sharedDirector()->getWinSize(); CCNode* layer = CCNode::create(); layer->setPosition(ccp(size.width / 2,size.height / 2)); this->addChild(layer,1); double layer_width = 0; CCScale9Sprite* background = CCScale9Sprite::create("buttonBackground.png"); background->setContentSize(CCSizeMake(100,50)); background->setPosition(ccp(layer_width + background->getContentSize().width / 2.0f,0)); layer->addChild(background); //下面这两步 是时时更新设置显示在框里的内容,设置初始值为0.00 this->setDisplayValueLabel(CCLabelTTF::create("0", "HelveticaNeue-Bold", 30)); //设置位置,也就是现实在background的坐标 m_pDisplayValueLabel->setPosition(background->getPosition()); layer->addChild(m_pDisplayValueLabel); layer_width += background->getContentSize().width; //添加controlStepper CCControlStepper *stepper = this->makeControlStepper(); stepper->setPosition(ccp (layer_width + 10 + stepper->getContentSize().width / 2, 0)); stepper->addTargetWithActionForControlEvents(this, cccontrol_selector(ControlStepper::valueChanged), CCControlEventValueChanged); layer->addChild(stepper); //layer_width的值增加,增加一个background的长度 layer_width += stepper->getContentSize().width; layer->setContentSize(CCSizeMake(layer_width,0)); layer->setAnchorPoint(ccp (0.5f,0.5f) ); this->valueChanged(stepper, CCControlEventValueChanged); //add mainMenu MainMenu *mainMenu = new MainMenu(); mainMenu->mainMenu(); this->addChild(mainMenu); return true; } CCControlStepper* ControlStepper::makeControlStepper() { CCSprite *minusSprite = CCSprite::create("stepper-minus.png"); CCSprite *plusSprite = CCSprite::create("stepper-plus.png"); return CCControlStepper::create(minusSprite, plusSprite); } void ControlStepper::valueChanged(CCObject *sender, CCControlEvent controlEvent) { CCControlStepper* pControl = (CCControlStepper*)sender; // Change value of label. m_pDisplayValueLabel->setString(CCString::createWithFormat("%0.02f", (float)pControl->getValue())->getCString()); }
效果如下:
4、ControlSwitch
bool ControlSwitch::init() { CCSize size = CCDirector::sharedDirector()->getWinSize(); CCNode* layer = CCNode::create(); layer->setPosition(ccp(size.width / 2,size.height / 2)); this->addChild(layer,1); double layer_width = 0; CCScale9Sprite* background = CCScale9Sprite::create("buttonBackground.png"); background->setContentSize(CCSizeMake(100,50)); background->setPosition(ccp(layer_width + background->getContentSize().width / 2.0f,0)); layer->addChild(background); m_pDisplayValueLabel = CCLabelTTF::create("#color" ,"Marker Felt" ,30); m_pDisplayValueLabel->retain(); m_pDisplayValueLabel->setPosition(background->getPosition()); layer->addChild(m_pDisplayValueLabel); layer_width += background->getContentSize().width; // Create the switch,参数分别是:滑动遮罩,on背景图,off背景图,滑动按钮,文字on,文字off CCControlSwitch *switchControl = CCControlSwitch::create ( CCSprite::create("switch-mask.png"), CCSprite::create("switch-on.png"), CCSprite::create("switch-off.png"), CCSprite::create("switch-thumb.png"), CCLabelTTF::create("On", "Arial-BoldMT", 16), CCLabelTTF::create("Off", "Arial-BoldMT", 16) ); switchControl->setPosition(ccp (layer_width + 10 + switchControl->getContentSize().width / 2, 0)); layer->addChild(switchControl); switchControl->addTargetWithActionForControlEvents(this, cccontrol_selector(ControlSwitch::valueChanged), CCControlEventValueChanged); // Set the layer size layer->setContentSize(CCSizeMake(layer_width, 0)); layer->setAnchorPoint(ccp (0.5f, 0.5f)); // Update the value label valueChanged(switchControl, CCControlEventValueChanged); //add mainMenu MainMenu *mainMenu = new MainMenu(); mainMenu->mainMenu(); this->addChild(mainMenu); return true; }
效果如下:
5、ControlSlider
bool ControlSlider::init() { CCSize size = CCDirector::sharedDirector()->getWinSize(); // Add a label in which the slider value will be displayed m_pDisplayValueLabel = CCLabelTTF::create("Move the slider thumb!\nThe lower slider is restricted." ,"Marker Felt", 32);//一开始初始化的显示文字 m_pDisplayValueLabel->retain(); m_pDisplayValueLabel->setAnchorPoint(ccp(0.5f, -1.0f)); m_pDisplayValueLabel->setPosition(ccp(size.width / 1.7f, size.height / 2.0f)); addChild(m_pDisplayValueLabel); // Add the slider,三个参数分别是:背景条,进度条,滑动按钮 CCControlSlider *slider = CCControlSlider::create("sliderTrack.png","sliderProgress.png" ,"sliderThumb.png"); slider->setAnchorPoint(ccp(0.5f, 1.0f)); slider->setMinimumValue(0.0f); // Sets the min value of range slider->setMaximumValue(5.0f); // Sets the max value of range slider->setPosition(ccp(size.width / 2.0f, size.height / 2.0f + 16)); slider->setTag(1); // When the value of the slider will change, the given selector will be call slider->addTargetWithActionForControlEvents(this, cccontrol_selector(ControlSlider::valueChanged), CCControlEventValueChanged); CCControlSlider *restrictSlider = CCControlSlider::create("sliderTrack.png","sliderProgress.png" ,"sliderThumb.png"); restrictSlider->setAnchorPoint(ccp(0.5f, 1.0f)); restrictSlider->setMinimumValue(0.0f); // Sets the min value of range restrictSlider->setMaximumValue(5.0f); // Sets the max value of range restrictSlider->setMaximumAllowedValue(4.0f);//虽然范围显示的是上面的那个范围,但实际能拖动到范围是这个数值。不理解的话想想中国的民主,很容易理解的嘛 restrictSlider->setMinimumAllowedValue(1.5f); restrictSlider->setValue(3.0f); restrictSlider->setPosition(ccp(size.width / 2.0f, size.height / 2.0f - 24)); restrictSlider->setTag(2); //same with restricted restrictSlider->addTargetWithActionForControlEvents(this, cccontrol_selector(ControlSlider::valueChanged), CCControlEventValueChanged); addChild(slider); addChild(restrictSlider); //add mainMenu MainMenu *mainMenu = new MainMenu(); mainMenu->mainMenu(); this->addChild(mainMenu); return true; } void ControlSlider::valueChanged(CCObject *sender, CCControlEvent controlEvent) { CCControlSlider* pSlider = (CCControlSlider*)sender; // Change value of label. //如果tag = 1,则是slider if(pSlider->getTag() == 1) m_pDisplayValueLabel->setString(CCString::createWithFormat("Upper slider value = %.02f", pSlider->getValue())->getCString()); //如果是第二个,则是restrictSlider if(pSlider->getTag() == 2) m_pDisplayValueLabel->setString(CCString::createWithFormat("Lower slider value = %.02f", pSlider->getValue())->getCString()); }
效果如下:
好了,没了。