cocos2dx基础篇(10)——开关按钮CCControlSwitch
在游戏中,我们常常需要使用到开关按钮来控制一些功能的开关。使用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组件,可以很方便的实现开关按钮的功能。在实际开发中,我们可以根据自己的需求,来设置开关按钮的背景图、滑块图、文字等等,达到更好的效果。
