[cocos2d] 谁摸了我一下----触摸事件处理
1. 设置接受触摸事件,可在init方法里面写上
[self setTouchEnabled: YES];
旧版为self.isTouchEnabled = YES;
xcode会报Deprecations ‘setIsTouchEnabled:’ is deprecated waring
2. 覆盖方法
- (void) registerWithTouchDispatcher{
[[[CCDirector shareDirector] touchDispatcher] addTargetedDelegate:self priority:INT32_MIN+ swallowsTouches:YES];
}
3. 捕获触摸
-(BOOL)ccTouchBegan:(UITouch *)touches withEvent:(UIEvent *)event{
//触摸开始时候做什么
}
-(void)ccTouchMoved:(UITouch *)touches withEvent:(UIEvent *)event{
}
-(void)ccTouchEnded:(UITouch *)touches withEvent:(UIEvent *)event{
//触摸结束时候做什么
}
4. 获取触摸位置
-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{
//获得触摸坐标(iphone UI)
CGPoint touchLocation = [touch locationInView:[touch view]];
//将坐标转变成openGL的格式
touchLocation = [[CCDirector shareDirector]converToGL:touchLocation;
/*
*PS:iphone的坐标原点是左上角,x往右增加,y往下增加
*openGL的坐标原点是左下角,x往右增加,y往上增加
*/
//获得sprite,spriteTag在前面enum结构中定义,以区别不同的tag。所以下面需要判断其是否为CCSprite类,以防判断错误
CCNode *node = [self getChildByTag:spriteTag];
//判断是否为CCSprite类!!!
NSAssert([node isKindOfClass:[[CCSpite class]], @"not a sprite");
//类型转换
CCSprite *sprite = (CCSprite*)node;
//判断触摸位置是否为sprite
BOOL isTouchSprite = CGRectContainsPoint([sprite boundingBox], touchLocation);
if (isTouchSprite){
//do sth
}
//若触摸到sprite则把触摸事件吞了(=,= 即其它CCLayer不再响应该触摸事件)
return isTouchSprite;
}
先写到这里,遇到其他再补充。
[cocos2d] 谁摸了我一下----触摸事件处理的更多相关文章
- cocos2d触摸事件处理机制(2.x和3.x变化)
2.x的触摸事件的版本号 触摸事件处理有2种子.以下单点触摸的样本.(另一种多点触摸屏). 创建cocos2d 该项目. 1. 重写下面虚函数. bool ccTouchBegan(cocos2d:: ...
- Cocos2D v3.x中关于重叠触摸层优先级的问题
在Cocos2D v2.x版本中可以通过以下方法设置本层的触摸优先级: [[CCDirector sharedDirector].touchDispatcher addTargetedDelegate ...
- iOS触摸事件处理
iOS触摸事件处理 主要是记录下iOS的界面触摸事件处理机制,然后用一个实例来说明下应用场景. 一.处理机制 界面响应消息机制分两块, (1)首先在视图的层次结构里找到能响应消息的那个视图. (2 ...
- iOS触摸事件处理--备用
主要是记录下iOS的界面触摸事件处理机制,然后用一个实例来说明下应用场景. 一.处理机制 界面响应消息机制分两块,(1)首先在视图的层次结构里找到能响应消息的那个视图.(2)然后在找到的视图里处理消息 ...
- UITouch 触摸事件处理(实例)
来源:http://www.open-open.com/lib/view/open1341882439838.html 1. UITouch 的主要方法: - (void)touchesBegan:( ...
- IOS (补充)触摸事件处理
[1]事件的基本概念 UIEvent:事件,是由硬件捕捉的一个表示用户操作设备的对象. 分三类:触摸事件.晃动事件.远程控制事件 触摸事件:用户通过触摸设备屏幕操作对象.输入数据.支持多点触摸,包括1 ...
- Android 触摸事件处理机制
Android 触摸事件的处理主要涉及到几个方法:onInterceptTouchEvent(), dipatchTouchEvent(), onTouchEvent(), onTouch(). on ...
- 【原】ios的hitTest方法以及不规则区域内触摸事件处理方法
概述 在正常的使用场景中,我们处理了比较多的矩形区域内触摸事件,比如UIButton.UIControl.一般来说,这些控件的图形以及触摸区域都是矩形或者圆角矩形的.但是在一些特殊应用场景中我们有时不 ...
- ios的hitTest方法以及不规则区域内触摸事件处理方法
概述 在正常的使用场景中,我们处理了比较多的矩形区域内触摸事件,比如UIButton.UIControl.一般来说,这些控件的图形以及触摸区域都是矩形或者圆角矩形的.但是在一些特殊应用场景中我们有时不 ...
随机推荐
- 鸟哥的Linux私房菜学习笔记(1)
2014/10/29 1.档案的权限管理分为三个部分: 拥有者.群组.其他 2.ls -al 命令可以看到档案的详细信息 3.档案的属性中由十个部分构成 第一个部分是档案类型 -代表档案.d代表文件夹 ...
- JS 定時刷新父類頁面
function timeCount() { var url = "MAC.aspx"; parent.location.href = url; } function beginC ...
- ubuntu 12.04安装redis2.6.16
1.下载源文件并安装 登录 http://www.redis.io/download 下载redis-2.6.16.tar.gz tar -zxf redis-2.6.16.tar.gz cd red ...
- Linux VPS使用百度网盘API上传备份文件
最近百度网盘将空间升级到了永久1TB,鉴于百度的实力用做数据备份空间不错,不过百度网盘没有Linux下的客户端,上传管理文件需通过百度开放云平台访问PCS资源的系列接口. 1.首先加入百度开发者:ht ...
- 深入理解JAVA多态原理
之前一直知道多态是什么东西,平时敲代码也经常用到多态,但一直没有真正了解多态底层的运行机制到底是怎么样的,这两天才研究明白点,特地写下来,跟各位同学一起进步,同时也希望各位大神指导和指正. 多态的概念 ...
- ZOJ 1057 Undercut(简单模拟)
Undercut 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=57 题目大意:a card game,two pla ...
- 读书笔记之 - javascript 设计模式 - 责任链模式
责任链模式可以用来消除请求的发送者和接收者之间的耦合.这是通过实现一个由隐式地对请求进行处理的对象组成的链而做到的.链中的每个对象可以处理请求,也可以将其传给下一个对象. 责任链的结构: 责任链由多个 ...
- 读书笔记之 - javascript 设计模式 - 享元模式
本章探讨另一种优化模式-享元模式,它最适合于解决因创建大量类似对象而累及性能的问题.这种模式在javascript中尤其有用,因为复杂的javascript代码很快就会用光浏览器的所有可用内存,通过把 ...
- wamp5.2 升级到wamp5.3 (转载)
1. 停止WAMP服务器. 2. 去网站windows.php.net 下载php5.3.5 the VC6 Thread Safe build. 不要下载THE INSTALLER. 3. 在 ...
- YouTube视频代码总结
var tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api" ...