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



        


       
阅读更多
文章标签: action layer
想对作者说点什么? 我来说一句

cocos2d-js实现单击双击

2017年10月20日 7.44MB 下载

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭