怎样在 Cocos2d里面使用 UITapGestureRecognizer来处理单击和双击

本文介绍如何在Cocos2d中利用UITapGestureRecognizer处理单击和双击事件,并给出具体的实现代码。同时讨论了使用单击手势识别可能引发的问题及解决办法。

              怎样在 Cocos2d里面使用 UITapGestureRecognizer来处理单击和双击


            在CCLayer的头文件中定义:
        UITapGestureRecognizer *singleTap;

       .m文件中:
       
        //处理  单击
        singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:
                     @selector(handleSingleTap:)];
        
        singleTap.numberOfTapsRequired=1;
        singleTap.numberOfTouchesRequired=1;
        
        [[[CCDirector  sharedDirector] openGLView] addGestureRecognizer: singleTap];
        [singleTap release];


    如果 要处理双击:
    
        doubleTap.numberOfTapsRequired = 2;
        doubleTap.numberOfTouchesRequired = 1;

   下面是 响应函数:
   
-(void)  handleSingleTap:(id)sender;

-(void)  handleSingleTap:(id)sender
{
    UNUSED(sender);
    NSLog(@"handleSingleTap  \r\n");
    
    CGSize screenSize = [CCDirector sharedDirector].winSize; 
    CGPoint  point=[singleTap locationInView:[[CCDirector  sharedDirector] openGLView]];
	CGPoint  glLocation=[[CCDirector sharedDirector] convertToGL:point];
    
    //判断点击的是否是“想要的”的区域
    bool  bSingleClickTableForme=false;
    CGRect   tableFormeRect=CGRectMake(5.0f, 10.0f, 125.0f, 58.0f);
    if ( CGRectContainsPoint(tableFormeRect, glLocation)==true) 
    {
        bSingleClickTableForme=true;
    }
}


需要注意的是,如果给一个Layer加上了Singletap的手势识别后,将会导致界面上面的其他组件比如:CCMenu不再能响应点击,因为点击消息全部被手势所截获,所以一般不要使用SingleTap,但是使用DoubleTap是没有什么问题的。一定要实现类似SingleTap的类似效果,可以处理TouchEnd事件,然后在里面判断坐标位置来处理。



        


       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值