cocos2d CCLayer 触摸相关
要让一个 CCLayer 能够接受触摸输入 需要进行如下设置: [selfsetTouchEnabled:YES];
cocos2d-x提供了两种触摸事件处理机制, 分别是CCStandardTouchDelegate 和 CCTargetedTouchDelegate。
CCStandardTouchDelegate包含四个回调函数,分别如下:
virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent) 处理用户按下事件
virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent) 处理Touch Move 事件
virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent) 处理用户放开事件
virtual void ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent) 处理Touch被打断事件,如来电话了。
在用户注册了一个CCStandardTouchDelegate之后, 所有的触摸事件都会回调到用户自己定义的CCStandardTouchDelegate。
CCTargetedTouchDelegate 包含下面四个回调函数:
virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) 处理用户按下事件,若用户需要继续处理该按下对应的后续事件,则return true, 否则,return false.
virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent) 处理Touch Move 事件
virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) 处理用户放开事件
virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent) 处理Touch被打断事件.
CCTargetedTouchDelegate 和 CCStandardTouchDelegate 有很大的区别。
第一,CCTargetedTouchDelegate 回调里的参数接收的不是Touch事件及集合(CCSet),而是单个的Touch事件,cocos2d-x会将多点触摸拆散成单个的Touch事件再进行回调。
第二,用户必须实现ccTouchBegan 函数,且如果某个用户按下消息需要继续跟踪,则ccTouchBegin返回true, 否则,ccTouchMove等接口不会被调用到。
第三,用户在注册TargetTouchDelegate的时候可以设置bSwallowsTouches标识,若某个TargetTouchDelegate将该标识设为true,且需要处理某个Touch事件(ccTouchBegan返回true),则调到该Delegate之后cocos2d-x不会将Touch消息发送给其他的TargetTouchDelegate和StandardTouchDelegate。
如果需要实现 CCTargetedTouchDelegate ,则需要调用如下函数
-(void) registerWithTouchDispatcher
{
CCTouchDispatcher *touchDispatcher = [[CCDirector sharedDirector] touchDispatcher];
[touchDispatcher addTargetedDelegate:self
priority:kCCMenuHandlerPriority -1
swallowsTouches:YES];
}
通过 如下代码,可以实现坐标的转换
CGPoint pt = [touch locationInView:[touch view]];
pt = [[CCDirectorsharedDirector] convertToGL:pt];
如果实现CCTargetedTouchDelegate,则不能出现以上函数
cocos2d CCLayer 触摸相关的更多相关文章
- 移动端前端常见的触摸相关事件touch、tap、swipe等整理
前端的很多事件在PC端和浏览器端可公用,但有些事件却只在移动端产生,如触摸相关的事件 本文整理了移动端常见的一些事件,包括原生支持的click.touch.tap.swipe事件,也有定义型的gest ...
- 移动端前端常见的触摸相关事件touch、tap、swipe
前端的很多事件在PC端和浏览器端可公用,但有些事件却只在移动端产生,如触摸相关的事件 本文整理了移动端常见的一些事件,包括原生支持的click.touch.tap.swipe事件,也有定义型的gest ...
- 微信小程序~触摸相关事件(拖拽操作、手势识别、多点触控)
touchstart 手指触摸动作开始 touchmove 手指触摸后移动 touchcancel 手指触摸动作被打断,如来电提醒,弹窗 touchend 手指触摸动作结束 ...
- js中触摸相关变量touches,targetTouches和changedTouches的区别
touches: 当前屏幕上所有触摸点的列表; targetTouches: 当前对象上所有触摸点的列表; changedTouches: 涉及当前事件的触摸点的列表 通过一个例子来区分一下触摸事件中 ...
- Cocos2d—X游戏开发之CCScrollView(滑动视图)(十二)
CCScrollView在Cocos2d-X引擎中主要使用在图片尺寸远大于屏幕尺寸的时候使用. 总体来说,使用起来比较简单. 一个是CCScrollView控件本身,一个是CCScrollViewDe ...
- Touch Handling in Cocos2D 3.x(一)
原帖地址 Cocos2d 3.0 带来经过完全修正后的触摸处理系统.本篇博文将提供所有触摸相关的信息: 接收触摸 取得触摸位置 处理不同个触摸生命周期中的事件 实现一个拖放机制 让我们开始吧 ;) 通 ...
- cocos2d-x 显示触摸操作(显示水波点击效果,用于视频演示)
昨天刚刚參加玩游戏设计大赛, 积累了一些东西. 接下去将会逐个分享出来. 首先是显示触摸操作. 由于要演示我们的作品.使用试玩过程中, 假设没办法显示我们的触摸操作(像录制视频一样, 点击了屏幕某点, ...
- cocos2d-x 显示触摸操作(单击显示效果浪潮,对于视频演示)-绩效转型
http://blog.csdn.net/hitwhylz/article/details/26042751 首先是显示触摸操作. 在文章最后.对性能进行一些提升改造. 由于要演示我们的作品.使用试玩 ...
- cocos2d ccitemimage
#ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" class H ...
随机推荐
- Linux如何修改文件/文件夹内所有文件的权限
一.修改文件权限 修改文件权限前,需要了解一下权限中的”rwx”与数字的对应关系,其中r=4,w=2,x=1. 例如:”drwxr-xr-x”,第一个”d”是代表文件夹,这里不用考虑,后面九个字符,每 ...
- 【mysql的编程专题③】内置函数
数学函数 常用 abs(x) 返回x的绝对值 floor(x) 返回小于x的最大整数值 mod(x,y) 返回x/y的模(余数) rand() 返回0到1内的随机值,可以通过提供一个参数(种子)使ra ...
- java nio2
Buffer的基本用法 使用Buffer读写数据一般遵循以下四个步骤: 写入数据到Buffer 调用flip()方法 从Buffer中读取数据 调用clear()方法或者compact()方法 当向b ...
- 87. Scramble String
题目: Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty subs ...
- 如何将phantomjs单独部署在服务端
如何将phantomjs单独部署在服务端 文章目录 一. 容我分析(lao dao)几句 二. 服务端 Look here 服务端phantomjs搭建 web端搭建及如何调用phantomjs 三. ...
- VC6.0下string不能用pusk_back,可用+=代替
2013-09-11 21:14:32 在VS下运行正确的代码,拿到VC6.0下,编译出错,提示: error C2039: 'push_back' : is not a member of 'bas ...
- getpeername
定义: int getpeername(int s, struct sockaddr *name, socklen_t *namelen); 描述: 获取socket的对方地址 得到对方的地址 s ...
- linux常用头文件
http://blog.csdn.net/kokodudu/article/details/17361161 aio.h 异步I/Oassert.h 验证程序断言 complex 复数类complex ...
- ios绘图时的坐标处理
在iOS中,进行绘图操作时,一般主要是在UIView:drawRect中调用 UIGraphicsBeginImageContextWithOptions等一系列函数,有时候直接画图就行,比如UIIm ...
- VS2015中快捷注释代码块
注释ctrl+k ctrl+c 反注释ctrl+k ctrl+u 需要注意的是第二个ctrl不能省略的