gpt4 book ai didi

iPhone 多点触控处理

转载 作者:行者123 更新时间:2023-12-03 20:47:42 24 4
gpt4 key购买 nike

我正在编写一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com