欢迎访问宙启技术站
智能推送

cocos2dx基础篇(10)——开关按钮CCControlSwitch

发布时间:2023-05-16 18:10:27

在游戏中,我们常常需要使用到开关按钮来控制一些功能的开关。使用Cocos2d-x中的开关按钮组件CCControlSwitch可以快速的实现开关按钮的功能。

1. CCControlSwitch的基本介绍

CCControlSwitch是Cocos2d-x中的一个组件类,继承于CCControl类。CCControlSwitch可以方便地实现开关按钮的功能。该组件提供了一个自定义的滑动条,通过滑动条的位置来控制按钮的状态,可以设置开关按钮的背景图、滑块图等等。

2. CCControlSwitch的使用步骤

创建一个开关按钮CCControlSwitch,需要经过以下几个步骤。

1) 导入头文件

#include "extensions/cocos-ext.h"

#include "ui/CocosGUI.h"

2) 创建CCControlSwitch对象

auto pSwitch = cocos2d::extension::ControlSwitch::create(

        cocos2d::Sprite::create("Switch_Mask.png"),

        cocos2d::Sprite::create("Switch_On.png"),

        cocos2d::Sprite::create("Switch_Off.png"),

        cocos2d::Sprite::create("Switch_Thumb.png"),

        cocos2d::Label::createWithTTF("On", "fonts/Marker Felt.ttf", 30),

        cocos2d::Label::createWithTTF("Off", "fonts/Marker Felt.ttf", 30)

    );

上述代码创建了一个开关按钮,设置了开关按钮的背景图片、开启状态的图片、关闭状态的图片、滑块图片以及按钮上的文字。这里用了Label来展示按钮上的文字。

3) 设置开关按钮的位置和大小

pSwitch->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));

pSwitch->setContentSize(Size(150, 150));

设置了按钮的位置和大小。

4) 设置开关按钮的状态

pSwitch->setOn(false);

通过设置setOn方法可以设置按钮的状态,这里设置为关闭状态。

5) 监听开关按钮的状态改变事件

pSwitch->addTargetWithActionForControlEvents(this, 

                cccontrol_selector(GameMenuScene::switchValueChanged),

                Control::EventType::VALUE_CHANGED);

通过addTargetWithActionForControlEvents方法可以添加事件监听器,当开关按钮的状态改变时,会触发switchValueChanged方法。该方法如下。

void GameMenuScene::switchValueChanged(Ref* pSender, Control::EventType type) {

    auto switchBtn = static_cast<ControlSwitch*>(pSender);

    CCLOG("Switch is on: %d", switchBtn->isOn());

}

上述代码实现了事件监听器switchValueChanged方法,当开关按钮的状态改变时,会通过isOn方法获取按钮的状态。

6) 将开关按钮添加到场景中

this->addChild(pSwitch, 1);

最后,将开关按钮添加到场景中即可。

3. CCControlSwitch的常用方法和属性

CCControlSwitch有以下几个常用的方法和属性。

1) setOn(bool isOn)

设置开关按钮的状态,isOn为true时表示开启状态,isOn为false时表示关闭状态。

2) isOn()

获取开关按钮的状态。

3) setEnabled(bool enabled)

设置开关按钮是否可用。

4) addTargetWithActionForControlEvents(Ref* target, SEL_CCControlHandler action, Control::EventType controlEvents)

添加事件监听器。

5) setBackgroundSprite(Sprite* sprite)

设置开关按钮的背景图。

6) setOnSprite(Sprite* sprite)

设置开关按钮的开启状态的图片。

7) setOffSprite(Sprite* sprite)

设置开关按钮的关闭状态的图片。

8) setThumbSprite(Sprite* sprite)

设置开关按钮的滑块图片。

9) setOnTitle(Label* label)

设置开关按钮开启状态下的文字label。

10) setOffTitle(Label* label)

设置开关按钮关闭状态下的文字label。

除了上述常用的方法和属性之外,CCControlSwitch还有一些其他的方法和属性,具体可以参考官方文档。

4. 总结

通过使用CCControlSwitch组件,可以很方便的实现开关按钮的功能。在实际开发中,我们可以根据自己的需求,来设置开关按钮的背景图、滑块图、文字等等,达到更好的效果。