这篇文章介绍两种方式处理cocos2d中的双击事件响应。

在iOS中使用UITapGestureRecognizer ,很容易就可以添加双击事件处理,但是在cocos2d中无法直接向sprite添加UITapGestureRecognizer,所以就要做一些处理。

说明:我现在是想向一个sprite 添加一个双击的事件响应。

第一种方法是比较简单的,使用touch中的tapCount这个属性就可以判断是tap的次数。

代码如下:

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    for (UITouch *touch in touches) {

        if ([touch tapCount] == 1) {
NSLog(@"single tap!");
}
else if ([touch tapCount] == 2) {
NSLog(@"double tap!");
} }
}

这里根据tapCount获知是单击和双击,然后再由touch获取到touch的坐标点,有这个坐标点再和我们要添加双击事件的sprit做碰撞检测,就是做
CGRectContainsPoint()的判断,那么就可以将双击事件定位到我们要的sprite。

下面介绍第二种方法。

这里我们还是要使用到UITapGestureRecognizer,但是添加的时候有一点技巧。

 UITapGestureRecognizer *doubleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
doubleTapGesture.numberOfTapsRequired = 2;
[[[CCDirector sharedDirector] view] addGestureRecognizer:doubleTapGesture];
-(void)tapAction:(UITapGestureRecognizer *)recognizer {

    NSLog(@"double tap");
//这样获取到的坐标位置是以左上角为原点的坐标系
CGPoint doubleTapPoint = [recognizer locationInView:recognizer.view];
//通过转换,将坐标系换成是以左下角为原点的坐标系
doubleTapPoint = [[CCDirector sharedDirector] convertToGL:doubleTapPoint]; NSLog(@"tap point = %@",NSStringFromCGPoint(doubleTapPoint)); for (CCSprite *sprite in spriteArray) {
//做碰撞检测
if (CGRectContainsPoint(sprite.boundingBox, doubleTapPoint)) { }
}
}

和第一种方法一样,我们也要通过碰撞检测定位到双击是到哪一个sprite。

Cocos2d-iphone 为sprite添加双击的事件响应的更多相关文章

  1. unity的sprite添加点击事件

    直接说方法 添加一个2dxxx的碰撞器 添加一个OnMouseDown的回调函数,这个函数看script reference就可以

  2. Qt QTreeWidget节点的添加+双击响应+删除详解(转)

    QTreeWidget是实现树形结构的类,在很多软件中都可以看到类似树形结构的界面. 我做的一个示例如下图,用来处理图像,最顶层节点是图像的路径名,子节点是图像的各个波段,双击各个波段会显示图像各波段 ...

  3. Qt QTreeWidget节点的添加+双击响应+删除详解

    转自: http://www.cnblogs.com/Romi/archive/2012/08/08/2628163.html 承接该文http://www.cnblogs.com/Romi/arch ...

  4. Unity Event Trigger 事件响应(二维,三维)添加组件

    EventTrigger 上主要的方法有PointerEnter.PointerExit.PointerDown.PointerUp.PointerClick............都会显示在面板上面 ...

  5. asp.net中的ListBox控件添加双击事件

    问题:在Aspx页里的ListBox A中添加双击事件,将选中项添加到另一个ListBox B中,双击ListBox B中的选中项,删除当前选中项 页面: <asp:ListBox ID=&qu ...

  6. ABAP QUERY报表添加双击事件

    问题:一个query报表程序,客户想要每一条能编辑并打印. 解决:直接给query添加双击事件,调用新report. 1.创建report,用paramater定义要从query结果中传过来的数据. ...

  7. 如何在natTable表格上添加双击事件

    在项目当中,有时候需要双击表格中的某一行触发一个事件或者一次数据请求,这时候,我们就需要在表格中绑定相关事件,思路实际上很简单,添加一个绑定事件就ok了,那么怎么添加呢?简单实现如下: 1.创建绑定双 ...

  8. Sprite添加阴影摇摆动画(Unity3D开发之九)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=575 今天看到一个很简单的摇摆动 ...

  9. miniui 给表格行添加监听事件的几种方法以及点击某列列名数据不能排序的问题

    最近在使用miniui框架做开发,在做表格行的点击监听事件中发现了几个属性,都可以起到监听效果但是执行的结果却大有不同.好了废话不多说,直接上代码. <div id="pageGrid ...

随机推荐

  1. 【转】IOS 30多个iOS常用动画,带详细注释

    原文: http://blog.csdn.net/zhibudefeng/article/details/8691567 CoreAnimationEffect.h 文件 // CoreAnimati ...

  2. PictureBox内的图片拖动功能

    当 PictureBox内的图片太大,超过PictureBox边框时可以用下面的方法来实现,   通过重绘来实现 :   Code bool wselected = false;  Point p = ...

  3. angular.js 简单的表达式

    <!doctype html> <html> <head> <meta charset ="utf-8"> <script s ...

  4. Jquery 点击空白处消失

    $(document).bind("click", function (e){ if ( $((e.target || e.srcElement)).closest("# ...

  5. hdoj 2191(多重背包)

    悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/ ...

  6. Vijos1825 NOI2008 志愿者招募 费用流

    Orz ByVoid大神的题解:https://www.byvoid.com/blog/noi-2008-employee/ 学习网络流建图的好题,不难想到线性规划的模型,不过利用模型的特殊性,结合网 ...

  7. &nbsp; 与 空格的区别

    nbsp 是 Non-Breaking SPace的缩写,即“不被折断的空格”,当两个单词使用   连接时,这两个单词就不会被分隔为2行,如下面 <div id="div1" ...

  8. Aspnet MVC 异步调用

    一个简图来描述下Aspnet MVC下的异步调用 { request } / \/ -------ISS------- > work thread | \ | \ route - aysn co ...

  9. 01:A+B问题

    总时间限制:  1000ms 内存限制:  65536kB 描述 在大部分的在线题库中,都会将A+B问题作为第一题,以帮助新手熟悉平台的使用方法. A+B问题的题目描述如下:给定两个整数A和B,输出A ...

  10. C题 - A+B for Input-Output Practice (II)

      Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Description You ...