在test项目中的ControlExtensionText\ CCControlSwitchTest目录下面的CCControlSwitchTest.cpp中,通过这个例子,我们也可以制作出不错的开关效果,以下是我尝试的代码:

首先声明文件:

#ifndef __loading__LoadingScene__
#define __loading__LoadingScene__ #include <iostream>
#include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC_EXT;
class LoadingScene :public CCControlSwitch //注意继承的类
{
public:
bool init();
CREATE_FUNC(LoadingScene);
static cocos2d::CCScene *scene();
void valueChanged(CCObject* sender, CCControlEvent controlEvent);
cocos2d::CCLabelTTF *ttf;
}; #endif /* defined(__loading__LoadingScene__) */

类的实现文件:

#include "LoadingScene.h"
#include "cocos-ext.h"
USING_NS_CC_EXT;
USING_NS_CC;
bool LoadingScene::init()
{
if (!CCControlSwitch::init()) //原示例中为CCControlScene::init(),但我写后一直不识别,不知道什么原因,估计是我继承的类不同吧
{
return false;
}
CCSprite *bg=CCSprite::create("fullbg.png");
this->addChild(bg);
CCSize size=CCDirector::sharedDirector()->getWinSize();
CCControlSwitch *switch1=CCControlSwitch::create(
CCSprite::create("switch-mask.png"), //背景图片
CCSprite::create("switch-on.png"), //开状态背景图片
CCSprite::create("switch-off.png"), //关状态背景图片
CCSprite::create("switch-thumb.png"), //开关背景图片
CCLabelTTF::create("On", "Arial-BoldMT", 16), //开文字标签
CCLabelTTF::create("Off", "Arial-BoldMT", 16) //关文字标签
);
this->addChild(switch1,1);
this->setPosition(ccp(size.width/2, size.height/2)); //添加动作事件
switch1->addTargetWithActionForControlEvents(this, cccontrol_selector(LoadingScene::valueChanged), CCControlEventValueChanged); CCScale9Sprite *sp=CCScale9Sprite::create("buttonBackground.png"); //添加九妹图片
sp->setContentSize(CCSizeMake(200, 300)); //设置九妹图片大小
this->addChild(sp,1);
sp->setAnchorPoint(ccp(1,1.3));
sp->setPosition(ccp(size.width/3, size.height/3));
ttf=CCLabelTTF::create("On", "Arial-BoldMT", 22);
ttf->setPosition(ccp(sp->getContentSize().width/2, sp->getContentSize().height/2));
sp->addChild(ttf,1); //在九妹图片上添加文字标签
return true;
}
CCScene *LoadingScene::scene()
{
CCScene *scene=CCScene::create();
LoadingScene *layer=LoadingScene::create();
scene->addChild(layer);
return scene;
}
void LoadingScene::valueChanged(CCObject* sender, CCControlEvent controlEvent)
{
CCControlSwitch* pSwitch = (CCControlSwitch*)sender;
if (pSwitch->isOn()) //判断标签是否是on状态
{
ttf->setString("On");
}
else
{
ttf->setString("Off");
} }

最后,实现的效果如下:

cocos2d-x开关按钮类CCControlSwitch的更多相关文章

  1. cocos2d中个类之间的关系

    1.Director类: (1)单例类Director::getInstance()  ,获取导演类对象 (2)设置游戏配置(OpenGL),推动游戏发展 runWithSence.replaceSe ...

  2. cocos2d menu菜单类

    // 在init这个函数当中做一些初始化的事情 bool HelloWorld::init() { ////////////////////////////// // 先构造父级对象 if ( !CC ...

  3. cocos2dx基础篇(8) 开关按钮CCControlSwitch

    [3.x] (1)去掉 “CC” (2)对象类 CCObject 改为 Ref (3)标签类 LabelTTF 改为 Label (4)CCControlEvent 改为强枚举 Control::Ev ...

  4. cocos2d::Vector

    C++中的vector使用范例 一.概述 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector是一个容器,它能够存放各种类型的对象,简 ...

  5. 类成员函数指针 ->*语法剖析

    在cocos2d-x中,经常会出现这样的调用,如 ->*,这个是什么意思呢,如下面得这个例子: , 其实这是对类的成员函数指针的调用,在cocos2dx中,这种形式多用于回调函数的调用.如我们经 ...

  6. 【Cocos2d入门教程三】HelloWorld之一目了然

    什么程序都是从HelloWorld先开始.同样Cocos2d-x我们先从HelloWorld进行下手.下面是HelloWorld的运行完成图: 建立好的Cocos游戏项目中会有两个比较常用接触的文件夹 ...

  7. ios游戏开发--cocos2d学习(2)

    在第一节中简单介绍了2d项目模板HelloWorld的基础代码,并做了一点小小的改变,像触摸接收.旋转.移动和颜色转变序列CCSequence的使用等等,2d本身封装好了很多方便使用的动作,只需要调用 ...

  8. cocos2D 虚拟摇杆Joystick功能实现

        @implementation InputLayer        - (id)init    {        if(self = [super init])        {        ...

  9. Cocos2D研究院之CCNode详解(三)

    http://www.xuanyusong.com/archives/950 上一章我们了解了cocos2d的项目路径以及工作原理,这次作者要真刀真枪地讲解代码了,咱们先来看看cocos2d最常用.也 ...

随机推荐

  1. 【linux驱动】linux驱动总览

    欢迎转载,转载时需保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http:// ...

  2. javax.servlet.http.HttpServletRequest;

    错误提示是没有引入javax.servlet.http.HttpServletRequest所在的包,编译错误. 这么添加: 项目-->右键-->properties-->java ...

  3. 图示CCScrollView的相关概念

    (转载请注明原文地址:http://blog.csdn.net/while0/article/details/11527899) 见下图: 1)设置ScrollView的视口大小的函数是:setVie ...

  4. Android 解屏幕锁与点亮屏幕

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  5. VS2008下直接安装使用Boost库1.46.1版本

    Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容.在C++ ...

  6. poj 百练 2765 八进制小数(精度问题)

    2765:八进制小数 查看 提交 统计 提示 提问 总时间限制:  1000ms  内存限制:  65536kB 描写叙述 八进制小数能够用十进制小数精确的表示.比方,八进制里面的0.75等于十进制里 ...

  7. [转]java-Three Rules for Effective Exception Handling

    主要讲java中处理异常的三个原则: 原文链接:https://today.java.net/pub/a/today/2003/12/04/exceptions.html Exceptions in ...

  8. Qt生成灰度图(转载)

    Qt生成灰度图(转载)   项目中用到大量基础图像处理知识,其中灰度图的生成是很重要的一环. 先补充一些基础知识: ------------------------------------------ ...

  9. wince平台下使用log4net记录日志

    前面我写过一篇文章是来介绍windows平台下开发软件使用log4net来记录日志的,详情请参考:用一个简单的示例说明日志记录组件log4net的使用. 我们在wince平台下开发程序也一样需要日志文 ...

  10. 在WPF使用FolderBrowserDialog和OpenFileDialog

    原文 在WPF使用FolderBrowserDialog和OpenFileDialog 相信习惯以前winform开发的朋友们都对FolderBrowserDialog和OpenFileDialog这 ...