[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.一般来说,这些控件的图形以及触摸区域都是矩形或者圆角矩形的.但是在一些特殊应用场景中我们有时不 ...
随机推荐
- Java 反射学习笔记
要学反射,先要了解Class这个类,Class是所有Java类的一个总称,Class的实例中存储的是一个类的字节码,获取Class的实例有三种方式: System.class new Date().g ...
- SELECT [Code] ,[AlarmID] ,[ItemName] ,[isDeleted] ,[Remark] FROM [LjlData].[dbo].[T_BaseDetail] union select 0--
SELECT [id] ,[AlarmID] ,[ItemName] ,[isDeleted] ,[Remark] FROM [LjlData]. ...
- HDU-1037(水水水题)
Keep on Truckin' Problem Description Boudreaux and Thibodeaux are on the road again . . . "Boud ...
- (转)Java爬虫,信息抓取的实现
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/23272657 今天公司有个需求,需要做一些指定网站查询后的数据的抓取,于是花了点 ...
- .Net开源SqlServer ORM框架SqlSugar整理
一.链接整理 官方Git源代码地址: https://github.com/sunkaixuan/SqlSugar 最新发布版更新地址:当前版本Release 3.5.2.1 https://gith ...
- 学习java随笔第七篇:java的类与对象
类 同一个包(同一个目录),类的创建与调用 class Man{ String name; void GetMyName() { System.out.println(name); } } publi ...
- MyEclipse中配置自己的JRE和tomcat
MyEclipse中配置自己的JRE:windows>Preference>java>Installed JREs>Add>Stantard VM>next> ...
- 隐藏TabBar的一些方法小结(适用与各种情况)
在项目中经常遇到隐藏tabBar,实力很多种方法,可以解决不同情况下问题 使用中涉及到view的层次关系,下面的使用方法 1.2不做说明:在使用3.4方法时注意要在tabBar所在的rootView中 ...
- C#网页版计算器程序代码
calculator.aspx.cs代码 using System; using System.Collections.Generic; using System.Linq; using System ...
- 对有状态bean和无状态bean的理解(转)
现实中,很多朋友对两种session bean存在误解,认为有状态是实例一直存在,保存每次调用后的状态,并对下一次调用起作用,而认为无状态是每次调用实例化一次,不保留用户信息.仔细分析并用实践检验后, ...