在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. WinForm中嵌入WebBrowser,并且支持C#和JS方法的相互调用

    纯粹WinForm界面不够友好,实现数据复杂度高的处理有些力不从心,所以看了看api以后决定用html来做. 我的wlw的代码插件不是很好用,大家凑合看吧 类前说明引用和权限 1: [Permissi ...

  2. 分享一个获取代理ip的python函数

    分享一个获取代理ip的python函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #coding:utf-8 from bs4 import Beaut ...

  3. Cookie 路径在本机测试及服务器部署,在浏览器处理方式上的不同

    Table of Contents 1 问题场景 2 解决过程 2.1 cookie是否设置成功 2.2 cookie是否上传到服务器 3 总结 1 问题场景 最近在学用Python进行web开发,写 ...

  4. VC socket Connect 超时时间设置

    设置connect超时很简单,CSDN上也有人提到过使用select,但却没有一个令人满意与完整的答案.偶所讲的也正是select函数,此函数集成在winsock1.1中,简单点讲,"作用使 ...

  5. Kendo UI开发教程(26): 单页面应用(四) Layout

    Layout继承自View,可以用来包含其它的View或是Layout.下面例子使用Layout来显示一个View 1 <div id="app"></div&g ...

  6. C# 数据访问编码需要遵循的几个规范

    一,链接打开之后必须关闭,否则会占用系统空间 SqlConnection conn=new SqlConnection(CONNECTIONSTRING); conn.open(); conn.clo ...

  7. 部署Spring Boot应用

    在开发Spring Boot应用的过程中,Spring Boot直接执行public static void main()函数并启动一个内嵌的应用服务器(取决于类路径上的以来是Tomcat还是jett ...

  8. 手机SIM卡无法识别解决方案

    SIM卡是工作中测试用的,经常插拔到不同的手机,前两天SIM卡放到手机中都能正常识别,今天插入到另一款手机中发现无法识别.心里糟了,是不是卡坏了,根据之 前的直觉,在公司找了一块橡皮,在SIM卡的芯片 ...

  9. C++,Python,Go对照学习-02

    main函数         Go中有且只有一个main函数,而且main函数必须在package main当中.main函数无返回值也无参数,如果希望获取从命令行传递的参数有其他包解决这个问题.   ...

  10. android解析xml一直报错org.xmlpull.v1.XmlPullParserException

     错误: org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT @1:2 injava.io.String ...