1

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

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

我如何知道精灵的触摸何时结束,以及它是否被“滑动”?

4

3 回答 3

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

  2. 滑动:cocos2d 不支持开箱即用的手势。你可能不得不自己工作。您可以从有关手势的苹果事件处理指南开始。raywenderlich.com 上的How To Drag and Drop Sprites with Cocos2D教程帮助了我。

于 2012-11-06T11:47:49.480 回答
0

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

于 2012-11-06T14:08:26.960 回答
0

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

于 2012-11-10T22:47:28.077 回答