0

我有一个带有 Box2D(和 Kobold2D)的 cocos2d iOS 应用程序;我在一层中有一个 18 个 CCSprite 的数组。它们现在是使用 spriteWithSpriteFrameName 和一个 textureAtlas(感谢 texturePacker)创建的。当我想更新 18 个精灵时,我想我可以 a) 更改图像(但我不是如何做到这一点 - 我看到了对 setDisplayFrame 的引用,但我需要从批处理节点/纹理中获取图像atlas 使用 spriteWithSPriteFrameName) 或 b) 销毁我之前创建的精灵并使用 addChild 添加到图层并在其位置创建一个新精灵(18 个精灵,在一个“游戏”中 16 次)。在资源使用和性能方面,首选哪种方法?看起来像a),但同样,不知道该怎么做。

谢谢

4

2 回答 2

4

您可以添加以下代码作为 CCSprite 的扩展:

-(void) setDisplayFrameNamed:(NSString*)name
{
    [self setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:name]];
}

如果你使用的是 box2d,你也可以使用GBox2D ,这在MonkeyJump 教程中有详细描述

于 2012-02-22T06:56:51.323 回答
0

如果可以避免的话,理想的解决方案是根本不切换精灵的纹理。其次是通过 Spriteframe 更改纹理(请注意,这排除了使用 CCSpriteBatchNode)。

创建新精灵通常是对性能影响最大的操作。

于 2012-02-22T08:56:20.290 回答