Cocos2d视差触摸



我有几个图层,并添加了一些精灵;试图以这种方式访问它们:

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView:[touch view]];
    location = [[CCDirector sharedDirector] convertToGL:location];
    if(CGRectContainsPoint([[self getChildByTag:tagNumber] boundingBox], location)) {
        CCLOG(@"You've touched the sprite!");
    }
}

一个奇怪的事情是,我们没有这个方法:

-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
    return YES;
}
当我触摸屏幕时,我的应用程序崩溃了。知道是什么吗?

更新:

-(void) registerWithTouchDispatcher
{
    [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self 
                                                     priority:0 swallowsTouches:YES];
}

如果你收到ccTouchBegan事件,但不是ccTouchesBegan(注意复数),你正在使用CCTargetedTouchDelegate协议。你可能已经用CCTouchDispatcher addTargetedDelegate注册了你的类,因此必须坚持使用CCTargetedTouchDelegate协议,其方法是ccTouchXXXX的单一版本,而不是ccTouchesXXXX。

你也应该注意Xcode给你的警告。如果你不实现ccTouchBegan我敢肯定,一个"可能不响应选择器"的警告可能会出现。所有的警告都应该认真对待(事实上,我建议打开"将所有警告视为错误")。

控制台中产生任何错误?关于无法识别的选择器?我接触cocos2D已经有一段时间了,但你应该检查一下第二种方法是否覆盖了第一种方法。如果它确实存在,那么当它不存在时,您的程序将使用第一个(返回void的那个),从而在代码实现中遇到实际的错误。我会在第一行设置一个断点'-(void)ccTouchesBegan:(NSSet *) touchwithevent:(UIEvent *)事件',删除返回BOOL的函数,然后我会一步一步地看到使用调试器时会发生什么。

请张贴你的控制台日志。我相信你应该有一个"选择器未找到","子未找到"或"无效参数异常由于无参数"的问题。

只是一个想法。

相关内容

  • 没有找到相关文章

最新更新