我不断收到崩溃,说: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'CCSprite: Batched sprites should use the same texture as the batchnode'
我不太清楚这意味着什么。 我GOOGLE了碰撞,但没有得到结果。 此外,当我回到我的第一个场景从第二现场回来在我的比赛结束后这只是发生。
我仔细检查了我的代码,我要确保所有的图像在我的精灵页将被添加为孩子们批节点。 我还确保我的应用程序不在我的精灵表图像将作为一个孩子我的层,而不是批量节点。
反正是什么原因导致死机,我该如何解决?
谢谢!
EDIT1:这似乎是在这一行中我的应用程序发生的事情:
[self.spriteLeft setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:imageName]];
我的NSLog imageName并返回:MyImage.png,然后我看在我的plist和加载和MyImage.png 绝对是有pvr.ccz。 所以,我不知道什么时候一切看起来正确为何导致崩溃。 此外,我相信,我在那里我在精灵表加载图像多数民众赞成在不使用spriteWithFile任何地方。
它只是意味着什么,它说:当你创建一个带有纹理CCSpriteBatchNode对象对象,以后当你添加精灵到CCSpriteBatchNode,所有的精灵添加到CCSpriteBatchNode必须是相同的纹理。 例如:
NSString *spriteName = @"agility"; // an example, this code comes from a method that returns the batchNode
// for many status types
NSString *plist = [NSString stringWithFormat:@"status_%@.plist",spriteName];
NSString *textureFileName = [NSString stringWithFormat:@"status_%@.pvr.gz",spriteName];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:plist textureFile:textureFileName];
CCSpriteBatchNode *batchNode = [CCSpriteBatchNode batchNodeWithFile:textureFileName];
// plist has a frame named status_agility_Ok.png
CCSprite *frameStatusOk = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@"status_%@_Ok.png",spriteName]];
[batchNode addChild:frameStatusOk]; // this will work, both the sprite and the batch node have the same texture
CCSprite *frameStatusNotOk=[CCSprite spriteWithFile:@"someOtherTextureFile.pvr.gz"];
[batchNode addChild:frameStatusNotOk]; // this will fail an assertion and crash.