ContolSwitch
控件起到了一个开关的作用类似于现实生活中的开关,直接上代码:

.h文件

  1. //
  2. // SwitchBtnScene.h
  3. // LSWGameIOS
  4. //
  5. // Created by lsw on 14-10-17.
  6. //
  7. //
  8.  
  9. #ifndef LSWGameIOS_SwitchBtnScene_h
  10. #define LSWGameIOS_SwitchBtnScene_h
  11.  
  12. #include "cocos2d.h"
  13. #include "cocos-ext.h"
  14.  
  15. class SwitchBtnScene : public cocos2d::Layer
  16. {
  17. public:
  18. static cocos2d::Scene *createScene();
  19. bool init();
  20. CREATE_FUNC(SwitchBtnScene);
  21.  
  22. void valueChanged(cocos2d::Ref *sender, cocos2d::extension::Control::EventType evt);
  23. };
  24.  
  25. #endif

.cpp文件

  1. //
  2. // SwitchBtnScene.cpp
  3. // LSWGameIOS
  4. //
  5. // Created by lsw on 14-10-17.
  6. //
  7. //
  8.  
  9. #include "SwitchBtnScene.h"
  10. #include "GUI/CCControlExtension/CCControlSwitch.h"
  11.  
  12. USING_NS_CC;
  13. USING_NS_CC_EXT;
  14.  
  15. Scene *SwitchBtnScene::createScene()
  16. {
  17. auto scene = Scene::create();
  18. auto layer = SwitchBtnScene::create();
  19. scene->addChild(layer);
  20. return scene;
  21. }
  22.  
  23. bool SwitchBtnScene::init()
  24. {
  25. if (!Layer::init())
  26. {
  27. return false;
  28. }
  29.  
  30. auto winSize = Director::getInstance()->getWinSize();
  31. auto onLabel = Label::createWithSystemFont("on", "Arail", 20);
  32. auto offLabel = Label::createWithSystemFont("off", "Arail", 20);
  33. onLabel->setColor(Color3B(0, 0, 0));
  34. offLabel->setColor(Color3B(0, 0, 0));
  35.  
  36. auto maskSprite = Sprite::create("switchButton/switchGreen.png");
  37. auto onSprite = Sprite::create("switchButton/switchGreen.png");
  38. auto offSprite = Sprite::create("switchButton/switchRed.png");
  39. auto thumbSprite = Sprite::create("switchButton/switchBtn.png");
  40. //设置按钮的截取范围 开关图片和显示文字以及按钮
  41. ControlSwitch *switchBtn = ControlSwitch::create(maskSprite, onSprite, offSprite, thumbSprite, onLabel, offLabel);
  42. addChild(switchBtn);
  43. switchBtn->setPosition(Vec2(winSize.width/2, winSize.height/2));
  44. //设置监听事件
  45. switchBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(SwitchBtnScene::valueChanged), Control::EventType::VALUE_CHANGED);
  46.  
  47. return true;
  48. }
  49.  
  50. void SwitchBtnScene::valueChanged(Ref *sender, Control::EventType evt)
  51. {
  52. if (evt == Control::EventType::VALUE_CHANGED)
  53. {
  54. ControlSwitch *btn = (ControlSwitch *)sender;
  55. if (btn->isOn())
  56. {
  57. CCLOG("btn is on");
  58. }
  59. else
  60. {
  61. CCLOG("btn is off");
  62. }
  63. }
  64. else
  65. {
  66. CCLOG("is other state");
  67. }
  68. }

cocos2d-x3.2 使用开关控制按钮 ControlSwitch的更多相关文章

  1. element UI实现表格中添加开关控制按钮

    我使用的是element ui V1.4.3 如下图是我要实现的效果: <template> <div> <el-button type="text" ...

  2. Kali-Linux-美化与优化

    照理说,linux的桌面是不应当存在在这个世界上的,作为一个linux用户,一味捣鼓桌面显得hin-不专业.但是,虚拟机要用到,浏览器要用到--更何况,自己的老婆能不打扮一下么? update:201 ...

  3. Cocos2d—X游戏开发之CCToggle(菜单标签切换)CCControlSwitch(开关切换)

    Cocos2d—X游戏开发之CCToggle(菜单标签切换) 首先继承子CCMenu,是菜单标签中的一种.‘ class CC_DLL CCMenuItemToggle : public CCMenu ...

  4. cocos2d-x3.0创建第一个jsb游戏

    第一步: 最新的cocos2d-x.下载地址https://github.com/cocos2d/cocos2d-x github上最新的引擎,值得注意的是官网上发布的引擎是稳定版.选择哪种就看个人喜 ...

  5. 如何优化cocos2d程序的内存使用和程序大小

    在我完成第一个游戏项目的时候,我深切地意识到"使用cocos2d来制作游戏的开发者们,他们大多会被cocos2d的内存问题所困扰".而我刚开始接触cocos2d的时候,社区里面的人 ...

  6. POJ 1681 (开关问题+高斯消元法)

    题目链接: http://poj.org/problem?id=1681 题目大意:一堆格子,或白或黄.每次可以把一个改变一个格子颜色,其上下左右四个格子颜色也改变.问最后使格子全部变黄,最少需要改变 ...

  7. POJ 1222 (开关问题+高斯消元法)

    题目链接: http://poj.org/problem?id=1222 题目大意:一堆开关,或开或关.每个开关按下后,周围4个方向开关反转.问使最后所有开关都关闭的,开关按法.0表示不按,1表示按. ...

  8. (译)如何优化cocos2d程序的内存使用和程序大小:第二部分(完)

    前言:从上周发布教程的微博反应情况来看,cocos2der们对于游戏的内存问题还是非常关心的.本文是上一篇博文的续,旨在教大家如何减少cocos2d程序的大小. 全文如下: 减少你的程序的大小 把纹理 ...

  9. 【Cocos2d入门教程四】Cocos2d-x菜单篇

    游戏世界多姿多彩,无论多靓丽的游戏,多耐玩的游戏,在与游戏用户交互上的往往是菜单. 上一章我们已经大概了解了导演.节点.层.精灵.这一章以菜单为主题. 菜单(Menu)包含以下内容: 1.精灵菜单项( ...

随机推荐

  1. ubuntu 安装 rabbitmq-server

    Rabbitmq 是用 erlang 语言写的,所以我们需要安装 Erlang,安装 erlang 又需要安装 python 与 simplejson,所以我们从python开始: 1.安装 pyth ...

  2. Remember that ordinal parameters are 1-based!

    问题发生的原因是:hql语句里不需要参数,却添加了一个参数,删掉添加参数的语句就可以了!

  3. C实现类封装、继承、多态

    1.  概述 C语言是一种面向过程的程序设计语言,而C++是在C语言基础上衍生来了的面向对象的语言,实际上,很多C++实现的底层是用C语言实现的,如在Visual C++中的Interface其实就是 ...

  4. 如何使用USB安装XenServer 6.x

    在XenServer 5.6以前我们能够很容易的通过一些工具,直接制作USB安装介质,然后快速安装XenServer,但是我们发现,到XenServer6.0以后,通过工具直接制作的XenServer ...

  5. java基础:数据类型

    一:基本数据类型 (1):整数类型   byte,short,int,long (2):浮点类型   float , double (3):布尔类型 boolean 注意: long 类型的变量后面要 ...

  6. HDU 5340 Three Palindromes (Manacher)

    题意: 判断是否能将字符串S分成三段非空回文串. 思路: 先预处理出前缀回文串和后缀回文串的位置,将位置分别装入两个集合中,O(n). 针对每个前缀回文串的终点位置,挑出不相交的后缀回文串,对中间那段 ...

  7. 【量化】docker

    查看docker docker ps docker ps -a 删除docker docker stop 8809752ca95a docker rm 8809752ca95a 打包fly cd ~/ ...

  8. php设计模式之观察者模式

    观察者模式:能够更便利地创建查看目标对象状态的对象,并且提供与核心对象非耦合的指定功能性. 利用这种模式可以方便地创建一个对象(观察者),其可以用来“监视”另一个对象(被观察者)的状态.这样,就可以在 ...

  9. PS常用

    一.文字和背景居中 1.按Ctrl+A或用矩形框选中所有 2.按选择工具->在工具属性栏里面会显示6种方向的对齐方式 二.画准确铺助线 1.视图->新建参考线->输入数值既可

  10. Android RecyclerView使用详解(三)

    在上一篇(RecyclerView使用详解(二))文章中介绍了RecyclerView的多Item布局实现,接下来要来讲讲RecyclerView的Cursor实现,相较于之前的实现,Cursor有更 ...