我真的很抱歉,我发现有几个关于cocos2d触摸检测的问题(包括this答案帮助了我一堆),但我无法让它们中的任何一个起作用。我会评论我联系的答案,而不是问我自己的问题,但我没有足够的代表留下评论。
我想做的就是在用户点击屏幕上的任意位置时立即停止动画。
到目前为止,这是我的代码:
- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"Touches Began");
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView: [touch view]];
location = [[Director sharedDirector] convertCoordinate: location];
CGRect mySurface = (CGRectMake(100, 100, 320, 480));
if(CGRectContainsPoint(mySurface, location)) {
NSLog(@"Event Handled");
return kEventHandled;
[[Director sharedDirector] stopAnimation];
}
return kEventIgnored;
NSLog(@"Event Ignored");
}
我在图层文件和cocosNode文件以及许多其他内容中尝试了BOOL
和void
,ccTouchesBegan
和touchesBegan
。什么都没发生。日志中没有显示任何内容,动画继续以其快乐的方式进行。我做错了什么?
答案 0 :(得分:2)
主要问题是你在[[Director sharedDirector] stopAnimation];
之后而不是之前得到return kEventHandled;
。 return
一旦被调用就退出该函数,因此它之后的任何内容都将永远无法到达。
我没有在我面前检查你的其余代码,但它看起来很好,所以我猜这是主要的问题。如果您甚至没有看到NSLog(@"Touches Began");
,那么您需要确保在扩展CocosNode
的{{1}}中执行此操作。
另一个有用的东西(一旦看到触摸)就是Layer
函数,它允许您在NSStringFromCGPoint
中轻松显示和调试值,因此您可以执行以下操作: / p>
CGPoint