我真的很抱歉,我意识到有几个关于 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 文件,以及许多其他东西。什么都没发生。日志中没有显示任何内容,动画继续以愉快的方式进行。我做错了什么?
最佳答案
主要问题是你有 [[Director sharedDirector] stopAnimation];
return kEventHandled;
之后而不是在它之前。 return
一旦被调用就退出该函数,因此它之后的任何内容都将永远不会到达。
我面前没有我的Mac来检查你的代码的其余部分,但它看起来很好,所以我猜这是主要问题。如果您甚至没有看到 NSLog(@"Touches Began");
那么你需要确保你在 CocosNode
中执行此操作延伸Layer
。
另一个有用的东西(一旦你看到触摸)是 NSStringFromCGPoint
函数,它允许您轻松显示和调试 CGPoint
中的值,所以你可以这样做:
NSLog(@"This layer was touched at %@", NSStringFromCGPoint(location));
关于iphone - 在cocos2d中检测触摸*屏幕上的任何地方*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1174346/