Iphone多点触控处理

时间:2010-10-31 06:59:06

标签: iphone objective-c cocos2d-iphone multi-touch

我正在编写一个iPhone应用程序,我想要处理多个部分。我正在使用cocos2d库。所以我创建了一个CCLayer子类并将其设置为CCStandartTouchDelegate。出于某种原因,我不想使用UIGestureRecognizer并建立正确的逻辑,我应该知道这些问题的答案:

  1. 如果我用一根手指敲击屏幕,然后用另一根手指敲击屏幕。 ccTouchesBegan会收到多少次触摸?

  2. 如果我用两根手指点击屏幕,然后只会移动其中一根。 ccTouchesMoved会收到多少次触摸?

1 个答案:

答案 0 :(得分:4)

当你遇到这样的问题时,最好的办法就是实现回调,并在实现中记录参数。例如:

- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    // Log everything (there will be repetition because the event contains the set of touches):
    NSLog(@"ccTouchesBegan: touches = %@; event = %@", touches, event);

    // Or, just log the number of touches to simplify the output:
    NSLog(@"ccTouchesBegan: %d touches", [touches count]);

    return kEventHandled;
}

然后只需运行您的应用并进行实验,即可查看日志。通过这里询问,您将以这种方式学习(并且更快)。

但是要回答你的具体问题:

  1. 每次点击都应该给ccTouchesBegan打个电话(即使第二个点击发生时第一个手指仍然按下)。如果两个手指同时击中,您将接到两个触摸的一个电话。

  2. 每当一个或多个手指移动时,您将重复调用ccTouchesMoved。如果只有一个手指在移动,则每次通话都会通过一次触摸。固定手指在移动或抬起之前不会产生事件。

  3. 当然,请记住为您的CCLayer设置isTouchEnabled = YES,否则您将无法获得任何回调。