• ControlExtensionTest(二)-----CCControlSlider


    #include "../CCControlScene.h"
    
    class CCControlSliderTest : public CCControlScene
    {
    public:
        CCControlSliderTest();
        virtual ~CCControlSliderTest();
        bool init();
        void valueChanged(CCObject *sender, CCControlEvent controlEvent);
    protected:
        CCLabelTTF* m_pDisplayValueLabel;
        CONTROL_SCENE_CREATE_FUNC(CCControlSliderTest)
    };
    CCControlSliderTest::~CCControlSliderTest()
    {
        CC_SAFE_RELEASE_NULL(m_pDisplayValueLabel);
    }
    bool CCControlSliderTest::init()
    {
        if (CCControlScene::init())
        {
            CCSize screenSize = CCDirector::sharedDirector()->getWinSize();
    
            // Add a label in which the slider value will be displayed
            m_pDisplayValueLabel = CCLabelTTF::create("Move the slider thumb!
    The lower slider is restricted." ,"Marker Felt", 32);
            m_pDisplayValueLabel->retain();
            m_pDisplayValueLabel->setAnchorPoint(ccp(0.5f, -1.0f));
            m_pDisplayValueLabel->setPosition(ccp(screenSize.width / 1.7f, screenSize.height / 2.0f));
            addChild(m_pDisplayValueLabel);
    
            // Add the slider
    //第一个参数是背景,第二个参数是进度条,第三个参数表示拖动按钮
            CCControlSlider *slider = CCControlSlider::create("extensions/sliderTrack.png","extensions/sliderProgress.png" ,"extensions/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(screenSize.width / 2.0f, screenSize.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(CCControlSliderTest::valueChanged), CCControlEventValueChanged);
    
            CCControlSlider *restrictSlider = CCControlSlider::create("extensions/sliderTrack.png","extensions/sliderProgress.png" ,"extensions/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(screenSize.width / 2.0f, screenSize.height / 2.0f - 24));
            restrictSlider->setTag(2);
    
        //same with restricted
            restrictSlider->addTargetWithActionForControlEvents(this, cccontrol_selector(CCControlSliderTest::valueChanged), CCControlEventValueChanged);
    
            addChild(slider);    
            addChild(restrictSlider);
            return true;
        }
        return false;
    }
    void CCControlSliderTest::valueChanged(CCObject *sender, CCControlEvent controlEvent)
    {
        CCControlSlider* pSlider = (CCControlSlider*)sender;
        // Change value of label.
        if(pSlider->getTag() == 1)
            m_pDisplayValueLabel->setString(CCString::createWithFormat("Upper slider value = %.02f", pSlider->getValue())->getCString());  
        if(pSlider->getTag() == 2)
            m_pDisplayValueLabel->setString(CCString::createWithFormat("Lower slider value = %.02f", pSlider->getValue())->getCString());  
    }
    //pSlider->getValue()可以获取滑动条的值
  • 相关阅读:
    (转)MVC3+EF4.1学习系列(十一)EF4.1常见的问题解决
    (转)iReaper for wp7正式发布
    (转)Asp.net MVC 多语言问题的解决方案
    (转)SQL Server 2005 性能优化实战系列(文章索引)
    (转)结合领域驱动设计的SOA分布式软件架构
    (转)细说jquery ui和jqgrid的ASP.NET实现
    (转)简单代码生成器原理剖析
    (转)[翻译]ASP.NET MVC 3 开发的20个秘诀(十八)[20 Recipes for Programming MVC 3]:自动完成搜索
    sql优化: MySQL Explain详解
    mysql优化: show processlist 详解
  • 原文地址:https://www.cnblogs.com/newlist/p/3243593.html
Copyright © 2020-2023  润新知