zoukankan      html  css  js  c++  java
  • Cocos2d-iphone 为sprite添加双击的事件响应


    这篇文章介绍两种方式处理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。





  • 相关阅读:
    Help-C#-属性-生成事件:预先生成事件和后期生成事件
    小说-长篇小说:《追风筝的人》
    散文-笔记:《皮囊》
    小说-励志:《妥协的力量》
    ons.ONSFactory.cs
    ons.ONSFactoryAPI.cs
    ons.ONSFactoryPorperty.cs
    System.Object.cs
    ons.MessageOrderListener.cs
    ons.MessageLisenter.cs
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3237008.html
Copyright © 2011-2022 走看看