Cocos2d-iphone 为sprite添加双击的事件响应
2013-08-03 21:59
232 查看
这篇文章介绍两种方式处理cocos2d中的双击事件响应。
在iOS中使用UITapGestureRecognizer ,很容易就可以添加双击事件处理,但是在cocos2d中无法直接向sprite添加UITapGestureRecognizer,所以就要做一些处理。
说明:我现在是想向一个sprite 添加一个双击的事件响应。
第一种方法是比较简单的,使用touch中的tapCount这个属性就可以判断是tap的次数。
代码如下:
这里根据tapCount获知是单击和双击,然后再由touch获取到touch的坐标点,有这个坐标点再和我们要添加双击事件的sprit做碰撞检测,就是做
CGRectContainsPoint()的判断,那么就可以将双击事件定位到我们要的sprite。
下面介绍第二种方法。
这里我们还是要使用到UITapGestureRecognizer,但是添加的时候有一点技巧。
和第一种方法一样,我们也要通过碰撞检测定位到双击是到哪一个sprite。
在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添加双击的事件响应
- Cocos2d-iphone 为sprite添加双击的事件响应
- cocos2d python sprite 响应mouse 事件
- 090906(星期天)项目进展:添加CTreeView控件对双击事件的响应
- cocos2d-html5学习之三-为sprite添加触摸事件
- cocos2d-html5学习之三-为sprite添加触摸事件
- iphone让按钮响应双击事件
- cocos2d-html5学习之三-为sprite添加触摸事件
- [iphone][cocos2D]layer 屏蔽底层layer对touch事件的响应
- COCOS2d中添加UIButton不响应触摸事件---iOS开发之最灵异事件之2
- 在picture控件上添加响应鼠标双击事件
- iphone 如何设置在uiImageView上添加按钮,按钮透明并且能响应事件
- Cocos2d-x 响应按下事件
- 动态生成的服务端控件,添加服务端的响应事件
- 最简单的silverlight的DataGrid行双击事件添加
- android listVIew添加长按响应事件
- 为Textview里面的ImageSpan添加点击响应事件
- 动态添加的ActiveX控件如何响应事件
- Swing中添加事件响应的三种处理方式说明
- 重写QLabel使其响应单、双击事件