在cocos2d中检测屏幕*上的任何位置*

时间:2009-07-23 20:39:08

标签: 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文件以及许多其他内容中尝试了BOOLvoidccTouchesBegantouchesBegan。什么都没发生。日志中没有显示任何内容,动画继续以其快乐的方式进行。我做错了什么?

1 个答案:

答案 0 :(得分:2)

主要问题是你在[[Director sharedDirector] stopAnimation];之后而不是之前得到return kEventHandled;return一旦被调用就退出该函数,因此它之后的任何内容都将永远无法到达。

我没有在我面前检查你的其余代码,但它看起来很好,所以我猜这是主要的问题。如果您甚至没有看到NSLog(@"Touches Began");,那么您需要确保在扩展CocosNode的{​​{1}}中执行此操作。

另一个有用的东西(一旦看到触摸)就是Layer函数,它允许您在NSStringFromCGPoint中轻松显示和调试值,因此您可以执行以下操作: / p>

CGPoint