关闭

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

标签: actionlayer
1969人阅读 评论(0) 收藏 举报
分类:

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



        


       
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1596172次
    • 积分:16694
    • 等级:
    • 排名:第599名
    • 原创:256篇
    • 转载:138篇
    • 译文:3篇
    • 评论:160条
    最新评论