在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. delphi高手突破学习笔记之面向对象类和对象的本质(有汇编解释 good)

    知识点1:堆和栈 每个应用程序可以获得的内存空间分为两种:堆(heap)和栈(stack). 堆又称为“自由存储区”,其中的内存空间的分配与释放是必须由程序员来控制的.例如,用GetMem函数获取了一 ...

  2. 基于visual Studio2013解决C语言竞赛题之1028平均值

          题目 解决代码及点评 /* 已知有9个数,请求出这些数中的最大值.最小值及平均值,以及有多少个数等于平均值? */ #include<stdio.h> ...

  3. SilkTest Q&A 12

    111. 谁能告诉我,正在执行的SilkTest的log是存放在哪里? 答案1: 用下面的命令可以导出文本格式的log "c:/program files/segue/silktest/pa ...

  4. POJ - 1185 炮兵阵地 (状态压缩)

    题目大意:中文题目就不多说大意了 解题思路: 1.每行最多仅仅有十个位置,且不是山地就是平原,那么就能够用1表示山地,0表示平原,将每一行的状态进行压缩了 2.接着找出每行能放炮兵的状态.先不考虑其它 ...

  5. ASP.NET - 在线编辑器(FreeTextBox)

    1.首先下载FreeTextBox程序集,再次使用3.3.1 · 官网:http://freetextbox.com/ · 百度云: 2.在程序中引入程序集 3.在工具箱中添加控件. 4.之后拖动控件 ...

  6. linux命令:env

    env | grep DB ~/>env | grep DB KTK_NONDB_LOG=4

  7. 文本框、文本编辑框、按钮——axure线框图部件库介绍

    1. 与文本面板组合设计表单 文本框主要是在设计页面表单的时候,用的最多,通过与文本面板的组合使用,下面我们通过文本面板和文本框设计了一个简单的注册表单 对于,文本框中的文字,只需要双击即可编辑文字 ...

  8. python中文注释及输出出错

    今天开始接触python,中文报错,你懂的,不细说. 网上很多类似的解决方案,有不是很明确,例如:http://blog.csdn.net/chen861201/article/details/770 ...

  9. OSI七层模型基础知识及各层常见应用

       OSI Open Source Initiative(简称OSI,有译作开放源代码促进会.开放原始码组织)是一个旨在推动开源软件发展的非盈利组织.OSI参考模型(OSI/RM)的全称是开放系统互 ...

  10. Tui-x简单介绍

    1.什么是Tui-x Tui-x是一个创建cocos2d-x UI界面的解决方式,而builder用的则是FlashCS,通过使用jsfl来拓展FlashCS从而达到UI编辑器的功能.这个jsfl所做 ...