我有一个带有Box2D(和Kobold2D)的cocos2d iOS应用程序;我有一个18层CCSprites的数组。现在使用spriteWithSpriteFrameName和textureAtlas创建它们(谢谢texturePacker)。当我想更新18个精灵时,我想我可以a)改变图像(但我不是怎么做的 - 我看到了对setDisplayFrame的引用,但我需要从批处理节点/纹理中获取图像atlas使用spriteWithSPriteFrameName)或b)销毁我之前创建的精灵并使用addChild添加到图层并创建一个新的精灵(18个精灵,16个在一个“游戏”中)。在资源使用和性能方面,首选哪种方法?看起来像a),但又一次,不知道该怎么做。
感谢
答案 0 :(得分:4)
您可以将以下代码添加为CCSprite的扩展名:
-(void) setDisplayFrameNamed:(NSString*)name
{
[self setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:name]];
}
如果您使用的是box2d,还可以使用GBox2D 这在MonkeyJump Tutorial
中有详细描述答案 1 :(得分:0)
理想的解决方案是不要切换精灵的纹理,如果你可以避免它。第二好的是通过Spriteframe更改纹理(请注意,这排除了使用CCSpriteBatchNode)。
创建新的精灵通常是对性能产生最大负面影响的操作。