首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CCNode+SFGestureRecognizer与ccTouch合作*?

CCNode+SFGestureRecognizer与ccTouch合作*?
EN

Stack Overflow用户
提问于 2014-04-09 23:42:19
回答 1查看 85关注 0票数 0

我在一些CCNode+SFGestureRecognizer节点上使用ccTouchBegan/Moved/Ended https://github.com/krzysztofzablocki/CCNode-SFGestureRecognizers来做一些pan手势,但是我也有其他节点只使用普通的ccTouchBegan/Moved/EndedCCTouchOneByOneDelegate.

但我遇到冲突了。由于ccTouch的重叠,我刚刚设置了swallowsTouches:NO。因为基本上,我要做的是根据触摸的方向(主要是水平的还是主要是垂直的)确定在ccTouchesMoved中使用哪种触摸,如果该方向匹配特定节点允许的方向,则节点通过取消所有其他目标处理程序来声明触摸

但是,当一些节点使用手势识别器时,当该方向不在该节点的允许方向时,我似乎没有一种简单的方法告诉触摸取消。在我确定其他触摸是否应该声明触摸之前,调用了gestureRecognizerShouldBegin get。我只是不知道怎样才能取消手势的触碰。

有什么好的,干净的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-10 19:19:44

因此,gestureRecognizerShouldBegin中的CCNode+SFGestureRecognizers.m没有正确的转换/速度信息,但是将自己的信息放在委托中。委托中的shouldReceiveTouch方法也没有此信息。

代码语言:javascript
复制
- (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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22975967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档