尝试检测触摸结束并触摸移动CCSprite

时间:2012-11-06 09:08:38

标签: cocos2d-iphone

我有一个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;
    }

然后我意识到我实际上不想使用touchBegan,因为我想检测是否向下拖动了一个精灵 - 所以我想使用touchMoved和touchEnded而不是touchBegan。

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

如何判断sprite的触摸何时结束,以及是否“刷过”?

3 个答案:

答案 0 :(得分:1)

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

  2. 滑动:cocos2d不支持开箱即用的手势。你可能不得不自己动手。您可以从苹果事件处理指南about gestures开始。在raywenderlich.com上的How To Drag and Drop Sprites with Cocos2D totorial使我感到高兴。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

CCTouchableSprite - 我的可触摸的CCSprite子类与Objective-C块,你可以使用touch Moved来检测你想要的东西。