SwitchControl控件起到了一个开关的作用类似于现实生活中的开关
由于控件比较简单,我就不做过多的解释,直接上代码
- #ifndef _SwitchControl_H_
- #define _SwitchControl_H_
- #include "cocos2d.h"
- #include "cocos-ext.h"
- USING_NS_CC;
- USING_NS_CC_EXT;
- class SwitchControl : public CCLayer
- {
- public:
- static CCScene* scene();
- CREATE_FUNC(SwitchControl);
- bool init();
- void switchValueChanged(CCObject*,CCControlEvent);
- };
- #endif
- #include "SwitchControl.h"
- CCScene* SwitchControl::scene()
- {
- CCScene* s = CCScene::create();
- SwitchControl* layer = SwitchControl::create();
- s->addChild(layer);
- return s;
- }
- bool SwitchControl::init()
- {
- CCLayer::init();
- //得到窗口的大小
- CCSize winSize = CCDirector::sharedDirector()->getWinSize();
- //设置ControlSwitch控件打开的文字No"
- CCLabelTTF* on = CCLabelTTF::create("ON","Arial",16);
- //设置ControlSwitch控件关闭时的文字"OFF"
- CCLabelTTF* off = CCLabelTTF::create("OFF",16);
- //设置ControlSwitch控件打开的文字的颜色
- on->setColor(ccc3(0,0));
- //设置ControlSwitch控件关闭时的颜色
- off->setColor(ccc3(0,0));
- //创建ControlSwitch控件
- CCControlSwitch* control = CCControlSwitch::create(
- CCSprite::create("switch-mask.png"),CCSprite::create("switch-on.png"),CCSprite::create("switch-off.png"),CCSprite::create("switch-thumb.png"),on,off);
- //添加ControlSwitch控件
- addChild(control);
- //设置ControlSwitch控件的位置
- control->setPosition(ccp(winSize.width / 2,winSize.height / 2));
- // 注册valuechange消息,当valuechange时,调用switchValueChanged函数
- control->addTargetWithActionForControlEvents(this,cccontrol_selector(SwitchControl::switchValueChanged),CCControlEventValueChanged);
- return true;
- }
- void SwitchControl::switchValueChanged(CCObject* sender,CCControlEvent ev)
- {
- if (ev == CCControlEventValueChanged)
- {
- CCControlSwitch* control = (CCControlSwitch*)sender;
- if (control->isOn())
- {
- CCLog("Switch if ON");
- }
- else
- {
- CCLog("Swith is Off");
- }
- }
- else
- {
- CCLog("other events");
- }
- }
执行结果:
演示效果: