这是我在我的代码中使用的功能:
-(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已添加。它不能再添加'
请帮帮我。
由于
答案 0 :(得分:0)
不确定,但似乎您可以多次将纹理添加到CCSpriteFrameCache中。识别此问题的最佳方法是使用调试执行游戏,当它“中断”时...启动调试器窗口,然后退回到代码所在的位置并识别导致问题的代码行 - 然后从那里开始工作。
这似乎也是对自定义类的不当使用,但这是对另一个主题的讨论。