cocos2dx中的层CCLayer
什么是层,层在cocos2dx里是一个能处理触摸事件的CCNode,因为它负责用户交互,因此大部分游戏细节都在这个类中完成,所以我们经常派生这个图层来完成逻辑交互代码。当然如果你的图层不需要接受交互信息,那么你可以直接使用CCNode来做图层,效率更高
触摸处理设置:
默认情况下,CCLayer并不接收触摸事件,只有设置了接收触摸事件才能接受触摸
CCLayer::setTouchEnabled(true);
这样Layer就能响应触摸实现了,当触摸开始时
void CCLayer::ccTouchesBegan(CCSet* pTouches, CCEvent* pEvent);被调用
当触摸进行时
void CCLayer::ccTouchesMoved(CCSet* pTouches, CCEvent* pEvent);被调用
当触摸结束时
void CCLayer::ccTouchesEnded(CCSet* pTouches, CCEvent* pEvent);被调用
当触摸过程被打断,比如来电打断了一个触摸事件时
void CCLayer::ccTouchesCancelled(CCSet* pTouches, CCEvent* pEvent);被调用
默认触摸是支持多点触摸的,所以被调用上述虚函数,如果不需要支持多点,只要单点,那么应该设置触摸模式
virtual void setTouchMode(ccTouchesMode mode);
typedef enum {
kCCTouchesAllAtOnce,
kCCTouchesOneByOne,
} ccTouchesMode;
其中kCCTouchesAllAtOnce表示支持多点触摸,kCCTouchesOneByOne表示支持单点触摸,在调用了
setTouchMode(kCCTouchesOneByOne)时,那么调用另外一套虚函数如下:
// default implements are used to call script callback if exist
当触摸开始时,虚函数virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);被调用
当手指移动时,虚函数virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);被调用
当手指离开时,虚函数virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);被调用
当来电打断触摸过程时,虚函数virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);被调用
CCLayer除了支持触摸输入之外,还能支持加速计输入,但是默认也是不支持的,需要增加代码来支持,调用
virtual void setAccelerometerEnabled(bool value);
可以设置加速计输入相应。
这时我们可以重载
virtual void didAccelerate(CCAcceleration* pAccelerationValue);
函数来处理加速计的输入。
cocos2dx中的层CCLayer的更多相关文章
- cocos2dx中的其他层
在cocos2dx中,CCLayer默认是黑色的,但是有时候需要有其他颜色北京的图层,那么就需要用到CCLayerColor 如下代码: ccColor4B color =ccc4(255, 0, 0 ...
- cocos2d-x中的导演、场景、层和精灵
场景(Scenes) 场景在cocos2d-x中是CCScene类实现的,是应用程序流中独立的一部分.一个cocos2dx应用程序可以有许多场景,但是在某一时刻,只有一个场景在运行. 比如,你有一个游 ...
- Cocos2dx中利用双向链表实现无限循环滚动层
[Qboy原创] 在Cocos2dX 3.0 中已经实现一些牛逼的滚动层,但是对于有一些需要实现循环滚动的要求确没有实现,笔者在前段时间的一个做了一个游戏,需求是实现在少有的(13个)英雄中进行循环滚 ...
- Cocos2d-X中实现菜单特效
Cocos2d-X中能够讲菜单和动作结合起来使用实现菜单特效 程序实例1:使用菜单和动作的组合实现菜单特效<一> #include "MenuItem.h" CCSce ...
- cocos2d-x中的Tiled地图
cocos2d-x中的瓦片地图是通过tiledMap软件制作的,存档格式是.tmx格式.此软件的使用步骤简单总结如下: (1)制作瓦片地图 1 打开软件,软件界面如下图. 2. 新建地图(文件-> ...
- cocos2dx进阶学习之CCLayer
继承关系 CCLayer -> CCNode,CCTouchDelegate,CCAccelerometerDelegate,CCKeypadDelegate CCLayer在cocos2dx中 ...
- Cocos2d-X中的坐标系
在Cocos2d-x中坐标能够分成四种: 1.GL坐标体系:GL坐标体系左下角为坐标原点,X轴向右,Y轴向上 2.UI坐标体系:UI坐标体系左上角为坐标原点,X轴向右,Y轴向上. .世界坐标体系:是窗 ...
- cocos2dx中的内存管理方式
转载:http://www.cocoachina.com/bbs/read.php?tid=195219 今天看了一下cocos2dx的内存管理机制,有些地方不太好理解搞了挺长的时间,现在感觉自己理解 ...
- Cocos2d-X中创建菜单项
Cocos2d-X中创建菜单的类: CCMenuItemFont:创建纯文本的菜单项 CCMenuItemAtlasFont:创建带有艺术字体的菜单项 CCMenuItemImage:用图片创建菜单项 ...
随机推荐
- Android App开发常用专题开源代码
Android App开发中用到过的专题类开源代码: 项目的需求多了,不知不觉成了Github摘抄员,感谢分享精神,节省了很多弯路和时间.不过想要实现指定效果,还是要看懂作者的思路才好下手改造. 主题 ...
- Binding 之ObjectDataProvider数据源
ObjectDataProvider数据源它可以把对象作为数据源提供给Binding,可用于绑定函数, 实例如下 public partial class BindObiectDataProvider ...
- JavaSE复习日记 : 多态
/** * 里氏替换原则 : * 能使用父类的地方,一定可以使用子类 * 什么是多态 : * 父类的引用,指向子类的对象 * 多态的前提条件 : * 有继承关系的两个类 * 多态的目的 : * ☆☆☆ ...
- isalpha函数,判断字符是否是字母
头文件:<iostream> or <cctype> 在c语言中<ctype.h> 功能:判断一个字符是否是英文字符,是大写返回1,是小写返回2,不是英文字符返 ...
- 用C++写一个简单的订阅者
打开一个终端,进入到beginner_tutorials包下面: cd ~/catkin_ws/src/beginner_tutorials 建立文件src/listener.cpp: vim src ...
- Spark源码学习1
转自:http://www.cnblogs.com/hseagle/p/3664933.html 一.基本概念(Basic Concepts) RDD - resillient distributed ...
- codeforces 242E. XOR on Segment 线段树
题目链接 给n个数, 两种操作, 一种是求区间内的数的和, 一种是将区间内的数异或x. 异或x没有什么思路, 单个异或肯定超时, 区间异或也没有办法做....后来才知道可以按位建线段树, 这样建20棵 ...
- github--新手使用错误分析
先上去github 或者任意托管的网站.注册账号,新建仓库, 在本地运行Xcode 新建工程,新建工程的时候 勾上本地 的仓库,然后 在本地的项目根目录执行下边的命令: git remote add ...
- 常见iis错误之一
1.win7配置iis 出现:HTTP 错误 403.14 - Forbidden 打开 IIS 管理器. 在“功能”视图中,双击“目录浏览”. 在“目录浏览”页上,在“操作”窗格中单击“启用”. 确 ...
- Java常用类库--观察者设计模式( Observable类Observer接口)
如果要想实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口. import java.util.* ; class House extends Obse ...