我正在编写一个 iPhone 应用程序,我想处理多点触控。我正在使用 cocos2d 库。因此,我创建了一个 CCLayer
子类并将其设置为 CCStandartTouchDelegate
。由于某种原因,我不想使用 UIGestureRecognizer 并构建正确的逻辑,我应该知道这些问题的答案:
如果我用一根手指点击屏幕,然后用另一根手指点击屏幕。
ccTouchesBegan
会捕获多少次触摸?如果我用两根手指点击屏幕,然后只会移动其中一根手指。
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;
}
然后运行您的应用程序并进行实验,观察日志。通过这种方式,您将比在此处提问了解更多(而且更快)。
但要回答您的具体问题:
每次点击您都应该调用一次 ccTouchesBegan(即使第二次点击发生时第一个手指仍然处于按下状态)。如果两根手指同时按下,您将通过两次触摸接到一个电话。
每次一根或多根手指移动时,您都会收到对 ccTouchesMoved 的重复调用。如果只有一根手指在移动,则每次调用都会通过一次触摸。静止的手指在移动或抬起之前不会生成事件。
当然,请记住为您的 CCLayer 设置 isTouchEnabled = YES
,否则您根本不会收到任何回调。
关于iPhone 多点触控处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4062149/