Cocos2d iphone CCNode+;SFgestureRecognitor';他在和ccTouch*合作吗?
我正在使用CCNode+SFgestureRecognitor在一些cocos2d节点上进行一些平移手势,但我还有其他节点只使用正常的CCTouchBegined/Moved/Ended并使用CCTouchOneByOneDelegate 但我遇到了冲突。使用ccTouch的重叠,我只需设置Cocos2d iphone CCNode+;SFgestureRecognitor';他在和ccTouch*合作吗?,cocos2d-iphone,uigesturerecognizer,Cocos2d Iphone,Uigesturerecognizer,我正在使用CCNode+SFgestureRecognitor在一些cocos2d节点上进行一些平移手势,但我还有其他节点只使用正常的CCTouchBegined/Moved/Ended并使用CCTouchOneByOneDelegate 但我遇到了冲突。使用ccTouch的重叠,我只需设置燕子触摸:否。因为基本上我所做的是根据触摸的方向(主要是水平还是垂直)以及方向是否匹配特定节点允许的方向来确定在移动的ccTouchesMoved中使用哪个触摸,该节点通过取消所有其他目标处理程序来声明触摸
燕子触摸:否
。因为基本上我所做的是根据触摸的方向(主要是水平还是垂直)以及方向是否匹配特定节点允许的方向来确定在移动的ccTouchesMoved
中使用哪个触摸,该节点通过取消所有其他目标处理程序来声明触摸
但是,当一些节点使用手势识别器时,当方向不在该节点允许的方向时,似乎没有一种简单的方法让我告诉触摸取消。在我可以确定其他触摸是否应要求触摸之前,应先调用GestureRecognitizer
get。我只是不知道如何取消手势的触摸
有什么好的、干净的方法可以做到这一点吗?因此,
手势识别器应该在CCNode+sfgestureRecograiners.m中开始使用
,但我没有正确的翻译/速度信息,但将我自己的信息放在代理中。代理中的shouldReceiveTouch
方法也没有此信息
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
UIPanGestureRecognizer *pan = (UIPanGestureRecognizer*)gestureRecognizer;
CGPoint translation = [pan translationInView:pan.view];
CGPoint velocity = [pan velocityInView:pan.view];
CGPoint dragVector = /* detect direction of the translation/velocity */
// if it was a horizontal drag return YES, otherwise NO
if (dragVector.x != 0 && dragVector.y == 0) {
return YES;
}
return NO;
}
return YES;
}
SFgestureRecognitor只是将所有信息传递给您的代理,因此“它没有正确的…”是错误的描述。