iphone - 在cocos2d中检测触摸*屏幕上的任何地方*?

标签 iphone objective-c cocos2d-iphone ipod-touch

我真的很抱歉,我意识到有几个关于 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/

相关文章:

ios - 排序描述符中的 @count 在 Objective-C 中给出 'not key value compliant' 错误

objective-c - int 属性出现无法识别的选择器

ios - 将 Cocos2d (2.0) 添加到现有的 iPhone 项目

iphone - iOS 4.1 中的 NSCFNumber 类是什么?

objective-c - NSImage大小问题

ios - popToViewController 首先执行

iphone - 卡在 IBOutlet 文件中

iphone - '+[NSInspiration调用WithMethodSignature :]: method signature argument cannot be nil' (Cocos2D)

iphone - 大文本在 UIScrollView 内部的 UITextView 中被截断

iphone - 如何从左向右移动uiview,反之亦然