终止应用

时间:2010-12-24 12:37:04

标签: cocos2d-iphone

这是我在我的代码中使用的功能:

 -(id) initFromNormalSprite:(CCNode<CCRGBAProtocol>*)normalSprite
        selectedSprite:(CCNode<CCRGBAProtocol>*)selectedSprite
          activeSprite:(CCNode<CCRGBAProtocol>*)activeSprite
        disabledSprite:(CCNode<CCRGBAProtocol>*)disabledSprite
                  name:(NSString*)name
                target:(id)target selector:(SEL)selector

{     if((self = [super initFromNormalSprite:normalSprite                            selectedSprite:selectedSprite                            disabledSprite:disabledSprite   target:target selector:selector]))     {         self.activeImage = activeSprite;         self.name = name;

    // TODO, create an addSpriteFrameByName extension
    CCSpriteFrameCache* fcache = [CCSpriteFrameCache sharedSpriteFrameCache];
    NSString* glowName = @"frames-glow.png";

    if([fcache spriteFrameByName: glowName]) {
    } else {
        CCTexture2D* glowTex = [[CCTexture2D alloc] initWithImage: [UIImage      imageNamed:glowName]];
        CCSpriteFrame* spriteFrame = [[CCSpriteFrame alloc] initWithTexture:glowTex
        rect:CGRectMake(0,0,glowTex.pixelsWide,glowTex.pixelsHigh)];
       //offset: ccp(0,0)];
        [fcache addSpriteFrame:spriteFrame name:glowName];
       [spriteFrame release];
        [glowTex release];
    }
    self.glow = [CCSprite spriteWithSpriteFrameName:glowName];
    self.showGlow = true;
}
return self;
}

它正在建设中,但在模拟器中崩溃的情况如下:

2010-12-24 23:22:48.417 PanelsExample [8967:207] *断言失败 - [NMPanelMenuItem addChild:z:tag:],/ Users / aeshverma / Downloads / jashmenn-shapes-panels- bcf4e74 / cocos2d的/ CCNode.m:360 2010-12-24 23:22:48.430 PanelsExample [8967:207] * 由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'child已添加。它不能再添加'

请帮帮我。

由于

1 个答案:

答案 0 :(得分:0)

不确定,但似乎您可以多次将纹理添加到CCSpriteFrameCache中。识别此问题的最佳方法是使用调试执行游戏,当它“中断”时...启动调试器窗口,然后退回到代码所在的位置并识别导致问题的代码行 - 然后从那里开始工作。

这似乎也是对自定义类的不当使用,但这是对另一个主题的讨论。