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

来源:互联网 发布:淘宝销量第一的产品 编辑:程序博客网 时间:2024/05/21 10:55

              怎样在 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事件,然后在里面判断坐标位置来处理。



        


       
原创粉丝点击