Cocos2d iphone 尝试检测CCSprite的触摸结束和触摸移动

Cocos2d iphone 尝试检测CCSprite的触摸结束和触摸移动,cocos2d-iphone,Cocos2d Iphone,我有一个CCSprite子类,最初我用 所以我有以下代码: -(void)onEnter { [super onEnter]; [[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES]; } -(void)onExit { [super onExit]; [

我有一个CCSprite子类,最初我用

所以我有以下代码:

    -(void)onEnter {
        [super onEnter];

       [[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
    }

    -(void)onExit {
        [super onExit];

        [[[CCDirector sharedDirector] touchDispatcher] removeDelegate:self];
    }

    -(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
        if ([self containsTouch:touch]) {
            // do stuff
            return YES;
        }
        return NO;
    }
但后来我意识到我实际上不想使用TouchBegind,因为我想检测是否有精灵被向下拖动——所以我想使用touchMoved和touchEnded而不是TouchBegind

但是,当我实现这些方法时,它们不会被调用

我怎么知道精灵的触摸何时结束,是否被“刷”过

  • 启用多点触摸:在appdelegate中的
    ApplicationIDFinishLaunching:application
    方法中,将多点触摸设置为YES:
    [glView SetMultipleTouched:YES]
    然后在CCLayer子类(用于检测触摸的类)的init方法中,添加
    self.isTouchEnabled=YES
    现在应该调用您的多点触控方法

  • 滑动:cocos2d不支持开箱即用的手势。你可能得自己工作。您可以从apple事件处理指南开始。raywenderlich.com上的托特瑞尔让我失望

  • 启用多点触摸:在appdelegate中的
    ApplicationIDFinishLaunching:application
    方法中,将多点触摸设置为YES:
    [glView SetMultipleTouched:YES]
    然后在CCLayer子类(用于检测触摸的类)的init方法中,添加
    self.isTouchEnabled=YES
    现在应该调用您的多点触控方法

  • 滑动:cocos2d不支持开箱即用的手势。你可能得自己工作。您可以从apple事件处理指南开始。raywenderlich.com上的托特瑞尔让我失望


  • 为了让调度器调用您的方法(移动、结束、取消),您必须首先声明触摸,即您将处理事件。这是在CCTouchStart中完成的,当您返回YES时。之后,您将收到其他事件。

    为了让调度器调用您的方法(移动、结束、取消),您必须首先声明触摸。您将处理这些事件。这是在CCTouchStart中完成的,当您返回YES时。之后,您将收到其他事件。

    -my touchable Subcass of CCSprite with Objective-C blocks,您可以使用touchMoved来检测所需内容。

    -my touchable Subcass of CCSprite with Objective-C blocks,您可以使用touchMoved来检测所需内容