我正在编写一个iPhone应用程序,我想要处理多个部分。我正在使用cocos2d库。所以我创建了一个CCLayer
子类并将其设置为CCStandartTouchDelegate
。出于某种原因,我不想使用UIGestureRecognizer
并建立正确的逻辑,我应该知道这些问题的答案:
如果我用一根手指敲击屏幕,然后用另一根手指敲击屏幕。 ccTouchesBegan
会收到多少次触摸?
如果我用两根手指点击屏幕,然后只会移动其中一根。 ccTouchesMoved
会收到多少次触摸?
答案 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;
}
然后只需运行您的应用并进行实验,即可查看日志。通过这里询问,您将以这种方式学习(并且更快)。
但是要回答你的具体问题:
每次点击都应该给ccTouchesBegan打个电话(即使第二个点击发生时第一个手指仍然按下)。如果两个手指同时击中,您将接到两个触摸的一个电话。
每当一个或多个手指移动时,您将重复调用ccTouchesMoved。如果只有一个手指在移动,则每次通话都会通过一次触摸。固定手指在移动或抬起之前不会产生事件。
当然,请记住为您的CCLayer设置isTouchEnabled = YES
,否则您将无法获得任何回调。