如何在cocos2d中嵌入多个精灵表CCSpriteFrameCache动画

时间:2011-06-07 09:13:47

标签: iphone cocos2d-iphone

所有

我想使用以下代码嵌入多个spriteFrame缓存。

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"abc.plist"];        

// Create a sprite sheet with the Happy Bear images
CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"abc.png"];
[self addChild:spriteSheet];

问题是,在第一个动画封面后,我想通过另一个 ccsprite fram缓存做另一个动画,并添加另一个精灵表,但是当我添加另一个精灵表时,它会给我 sigerbat 错误。

如何在一个动画封面后进行多个动画,然后第二个动画将开始,请记住有4个 CCSpriteFrameCache 文件(即4个plist文件)

1 个答案:

答案 0 :(得分:4)

添加到CCSpriteBatchNode的所有CCSprite必须使用相同的纹理。所以你想要完成的是不可能的,因为你试图从4种不同的纹理中添加图像。如果您检查控制台(在调试版本中),您将找到一条消息,说明该效果。

解决方案:为每个纹理使用一个CCSpriteBatchNode(通过CCSpriteFrameCache plist加载)。除了根本不使用CCSpriteBatchNode之外,您将不得不编写更多代码,但这是您可以执行此操作的唯一方法。

您可能希望进行性能测试,以检查您是否确实需要CCSpriteBatchNode。例如,如果您一次只在屏幕上显示来自同一纹理的一个精灵,则不需要CCSpriteBatchNode。如果你在屏幕上有多个(和很多)精灵并且所有精灵都使用相同的纹理,那么它只能提高性能。