我在日志
中收到此异常*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'CCSprite is not using the same texture id'
我要做的是添加一个普通的" myfile.png"归档到SpriteBatchNode
**批处理节点的声明
CCSpriteBatchNode *_backgroundLayer = [CCSpriteBatchNode batchNodeWithFile:@"sprites.png"];
**用法
这条线完美无缺
CCSprite *sprite1 = [CCSprite spriteWithSpriteFrameName:@"PngFileKeptInSpriteSheet.png"];
[_backgroundLayer addChild:sprite1];
但是,当我使用直接* .png文件添加到批处理节点时,它会崩溃
CCSprite *sprite2 = [CCSprite spriteWithFile:@"myfile.png"];
在线崩溃
[_backgroundLayer addChild:sprite2];
在进一步调试时,我发现:
断言失败在文件CCSpriteBatchNode.m
内部方法-(void) addChild:(CCSprite*)child z:(NSInteger)z tag:(NSInteger) aTag
在第NSAssert( child.texture.name == textureAtlas_.texture.name, @"CCSprite is not using the same texture id");
行
P.S。 :by" normal"我的意思是不从* .plist文件中获取
答案 0 :(得分:2)
首先,我要更新cocos2D。但是,这不是你的问题,无论如何可能不会在最新版本中“修复”。这不是一个真正的错误
批处理节点要求您要批处理的所有精灵都使用相同的纹理。加载精灵表时,它使用一个大的纹理。当您致电spriteWithFile
时,cocos2d会根据该图片创建纹理。
您很少需要使用spriteWithFile
从精灵创建批处理节点。我能想到的唯一场景是你想要多次绘制相同的图像。 (而不是来自相同纹理的许多图像)。
简而言之,你想要做的事情是不受支持的,无论如何都没有多大意义,因为这两个精灵不会被殴打。