• cocos2d-x3.2 使用开关控制按钮 ControlSwitch



    ContolSwitch 控件起到了一个开关的作用类似于现实生活中的开关,直接上代码:

    .h文件

    //
    //  SwitchBtnScene.h
    //  LSWGameIOS
    //
    //  Created by lsw on 14-10-17.
    //
    //
    
    #ifndef LSWGameIOS_SwitchBtnScene_h
    #define LSWGameIOS_SwitchBtnScene_h
    
    #include "cocos2d.h"
    #include "cocos-ext.h"
    
    class SwitchBtnScene : public cocos2d::Layer
    {
    public:
        static cocos2d::Scene *createScene();
        bool init();
        CREATE_FUNC(SwitchBtnScene);
        
        void valueChanged(cocos2d::Ref *sender, cocos2d::extension::Control::EventType evt);
    };
    
    #endif
    

    .cpp文件

    //
    //  SwitchBtnScene.cpp
    //  LSWGameIOS
    //
    //  Created by lsw on 14-10-17.
    //
    //
    
    #include "SwitchBtnScene.h"
    #include "GUI/CCControlExtension/CCControlSwitch.h"
    
    USING_NS_CC;
    USING_NS_CC_EXT;
    
    Scene *SwitchBtnScene::createScene()
    {
        auto scene = Scene::create();
        auto layer = SwitchBtnScene::create();
        scene->addChild(layer);
        return scene;
    }
    
    bool SwitchBtnScene::init()
    {
        if (!Layer::init())
        {
            return false;
        }
        
        auto winSize = Director::getInstance()->getWinSize();
        auto onLabel = Label::createWithSystemFont("on", "Arail", 20);
        auto offLabel = Label::createWithSystemFont("off", "Arail", 20);
        onLabel->setColor(Color3B(0, 0, 0));
        offLabel->setColor(Color3B(0, 0, 0));
        
        auto maskSprite = Sprite::create("switchButton/switchGreen.png");
        auto onSprite = Sprite::create("switchButton/switchGreen.png");
        auto offSprite = Sprite::create("switchButton/switchRed.png");
        auto thumbSprite = Sprite::create("switchButton/switchBtn.png");
        //设置按钮的截取范围 开关图片和显示文字以及按钮
        ControlSwitch *switchBtn = ControlSwitch::create(maskSprite, onSprite, offSprite, thumbSprite, onLabel, offLabel);
        addChild(switchBtn);
        switchBtn->setPosition(Vec2(winSize.width/2, winSize.height/2));
        //设置监听事件
        switchBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(SwitchBtnScene::valueChanged), Control::EventType::VALUE_CHANGED);
        
        return true;
    }
    
    void SwitchBtnScene::valueChanged(Ref *sender, Control::EventType evt)
    {
        if (evt == Control::EventType::VALUE_CHANGED)
        {
            ControlSwitch *btn = (ControlSwitch *)sender;
            if (btn->isOn())
            {
                CCLOG("btn is on");
            }
            else
            {
                CCLOG("btn is off");
            }
        }
        else
        {
            CCLOG("is other state");
        }
    }



  • 相关阅读:
    如何计算时间复杂度
    注意线程
    java中一个类要当作线程来使用有两种方法
    压缩和解压
    init [0123456]
    linux文件目录
    为什么使用combiner?【Hadoop】
    JAVA标识符
    关键字:java
    转 java 中int String类型转换
  • 原文地址:https://www.cnblogs.com/shiweihappy/p/4246417.html
Copyright © 2020-2023  润新知