cocos2d-x开关按钮类CCControlSwitch
在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的更多相关文章
- cocos2d中个类之间的关系
1.Director类: (1)单例类Director::getInstance() ,获取导演类对象 (2)设置游戏配置(OpenGL),推动游戏发展 runWithSence.replaceSe ...
- cocos2d menu菜单类
// 在init这个函数当中做一些初始化的事情 bool HelloWorld::init() { ////////////////////////////// // 先构造父级对象 if ( !CC ...
- cocos2dx基础篇(8) 开关按钮CCControlSwitch
[3.x] (1)去掉 “CC” (2)对象类 CCObject 改为 Ref (3)标签类 LabelTTF 改为 Label (4)CCControlEvent 改为强枚举 Control::Ev ...
- cocos2d::Vector
C++中的vector使用范例 一.概述 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector是一个容器,它能够存放各种类型的对象,简 ...
- 类成员函数指针 ->*语法剖析
在cocos2d-x中,经常会出现这样的调用,如 ->*,这个是什么意思呢,如下面得这个例子: , 其实这是对类的成员函数指针的调用,在cocos2dx中,这种形式多用于回调函数的调用.如我们经 ...
- 【Cocos2d入门教程三】HelloWorld之一目了然
什么程序都是从HelloWorld先开始.同样Cocos2d-x我们先从HelloWorld进行下手.下面是HelloWorld的运行完成图: 建立好的Cocos游戏项目中会有两个比较常用接触的文件夹 ...
- ios游戏开发--cocos2d学习(2)
在第一节中简单介绍了2d项目模板HelloWorld的基础代码,并做了一点小小的改变,像触摸接收.旋转.移动和颜色转变序列CCSequence的使用等等,2d本身封装好了很多方便使用的动作,只需要调用 ...
- cocos2D 虚拟摇杆Joystick功能实现
@implementation InputLayer - (id)init { if(self = [super init]) { ...
- Cocos2D研究院之CCNode详解(三)
http://www.xuanyusong.com/archives/950 上一章我们了解了cocos2d的项目路径以及工作原理,这次作者要真刀真枪地讲解代码了,咱们先来看看cocos2d最常用.也 ...
随机推荐
- Eclipse用法和技巧十八:减少不必要的输入
写代码的时候,很多人都有一个原则,尽量上输入.依靠IDE自动生成的代码,一般可读性,排版什么的都还是不错的,最主要的一般不会有什么低级错误.今天介绍几个在eclipse环境中,常用的依靠eclipse ...
- 常见tcp端口
TCP端口 7 = 回显 9 = 丢弃 11 = 在线用户 13 = 时间服务 15 = 网络状态 17 = 每日引用 18 = 消息发送 19 = 字符发生器 20 = ftp数据 21 = 文件传 ...
- sharepoint 2013 根据网站模版创建网站,并赋值网站权限 create a site by custom site template
通过程序,根据网站模版,创建新的网站 private void CreateSiteBySiteTemplate() { SPSecurity.RunWithElevatedPrivileges(de ...
- android 打包 /${zipalign}" error=2, No such file or directory
当我更新完android L proview之后我的打包出问题了,报错/${zipalign}" error=2, No such file or directory 排查了一下午才知道 近 ...
- Qt之多线程
源地址:http://blog.csdn.net/liuhongwei123888/article/details/6072320 Qt 是一种基于 C++ 的跨平台 GUI 系统,能够提供给用户构造 ...
- 基于visual Studio2013解决面试题之0503取最大数字字符串
题目
- 【学习opencv第七篇】图像的阈值化
图像阈值化的基本思想是,给定一个数组和一个阈值,然后根据数组中每个元素是低于还是高于阈值而进行一些处理. cvThreshold()函数如下: double cvThreshold( CvArr* s ...
- 能够返回运行结果的system函数加强版本号
/********************************************************************* * Author : Samson * Date ...
- CodeForces 370C. Mittens
C. Mittens time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- 进程、线程、轻量级进程、协程和go中的Goroutine
进程.线程.轻量级进程.协程和go中的Goroutine 那些事儿电话面试被问到go的协程,曾经的军伟也问到过我协程.虽然用python时候在Eurasia和eventlet里了解过协程,但自己对协程 ...