我正在设计一个应用程序,我们在多点触控和稍微延迟的多点触控方面遇到了一些问题(这导致对 TouchesBegan 的 2 次单独调用)。
我们遇到的问题是当玩家同时用两根手指点击时:
有时它可以被注册为一个 NSSet with touches.count = 2
或
有时,如果玩家在第二次触摸时稍微晚了一点,它会注册两个调用 CCTouchesBegan,每个调用的 touches.count = 1。
注册 touches.count = 2 的 TouchesBegan 调用和当玩家在第二次触摸(对 TouchesBegan 的两次调用)稍晚时使用相同的回调注册 TouchesBegan 调用的最简单方法是什么?
我最初的想法是获取[事件时间戳]并将其与之前的时间戳进行比较,然后检查它是否在某个时间间隔内......
执行此操作的最佳方法是什么?
最佳答案
您不需要时间戳比较。除了使用 touches NSSet 对象,您还可以利用 event 来检索触摸。
- (void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if( [[event allTouches] count] == 2 )
{
// Do your thing here
}
}
注意:如果您用两根手指点击并稍有延迟,ccTouchesBegan 将被调用两次,但在第二次调用中,事件 对象将有两次触摸。
关于objective-c - 多点触控 Cocos2d TouchesBegan 个人与触摸集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12522283/