如何在cocos2d中加载后台动画?

时间:2013-08-12 05:13:21

标签: ios cocos2d-iphone

我目前正在开发一款适用于iPad的cocos2d游戏,其中有很多动画。我以前使用zwoptex创建spritesheet并在我的项目中添加动画。

在我的游戏中有10个级别,并且在每个级别完成后将播放一个动画,每个级别的动画都不同,动画图像大小与设备屏幕大小相同。所以我不是创建spritesheet文件,而不是我直接加载图像。我的问题是动画制作时需要花费太多时间进行动画播放。

如何修复它?请任何人指导我。是否可以在plist中加载完整的屏幕尺寸图像(1024x768),因为每个级别共有10个级别,动画有20帧,所以10X20 = 200个图像需要加载spritesheet。

我正在使用此代码进行动画

 CCAnimation *animation = [CCAnimation animation];
for(int i=1;i<=20;i++)
 {
  [animation addFrameWithFile:[NSString stringWithFormat:@"Level%dAni%d.png",level,i];
 }
 animation.delayPerUnit = 0.3f;
 animation.restoreOriginalFrame = YES;
 id action = [CCAnimate actionWithAnimation:animation];

我的问题是可以用spritesheet加载全屏幕动画吗?和动画加载时间不同,如何解决它需要太多时间?

请帮帮我..

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

使用NSThread并在此主题中加载动画。

NSThread *thread = [[[NSThread alloc] initWithTarget:self selector:@selector(preloadFireWorkAnimation) object:nil] autorelease];
    [thread start];

-(void)preloadFireWorkAnimation
 {
      // load your animation here;
 }

答案 2 :(得分:1)

进行数学计算,计算出200xx68像素的200张图片所需的内存量。任何iSomething设备的内存太多了。

如果您遇到性能问题(即您是否在设备上运行?),那么您可以采取两项措施来提高图像加载速度:

  • 将图像转换为.pvr.gz(我建议使用TexturePacker)。它们的加载速度明显快于.png。
  • 使用RGBA4444像素格式(再次使用TexturePacker可以执行此操作),并在加载图像之前在cocos中设置纹理格式。图像会更小,占用更少的内存。

在您的代码中,您执行动画

    [CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA4444];
    // load your images and do your anim
    ...
    // at the completion of the anim
    [CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];