iPhone 多点触控处理

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

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

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

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

最佳答案

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

- (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 的重复调用。如果只有一根手指在移动,则每次调用都会通过一次触摸。静止的手指在移动或抬起之前不会生成事件。

当然,请记住为您的 CCLayer 设置 isTouchEnabled = YES,否则您根本不会收到任何回调。

关于iPhone 多点触控处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4062149/

相关文章:

iphone - iOS:UITableViewCell 类中的按钮调用主 UIViewController 上的方法

iphone - 如何在播放电影时有菜单-iphone cocos2d

iphone - 如何加载存储在静态库中的图像

ios - iosopendev-找不到首选项框架文件错误

ios - CCScene 添加子过渡

iphone - 如何在 Cocos2d 中更新并显示分数整数?

ios - -[CCSprite draw] 530 中的 OpenGL 错误 0x0502

ios - Swift 2 逻辑 AND(&) 运算符

iphone - QLPreviewController 与 NSData?

iphone - 防止禁用的 UIButton 传播触摸事件