我目前正在开发一款适用于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加载全屏幕动画吗?和动画加载时间不同,如何解决它需要太多时间?
请帮帮我..
答案 0 :(得分:1)
通过使用Cocos2D,您可以轻松地为精灵表图像设置动画。
使用Cocos2D
尝试以下示例http://www.smashious.com/cocos2d-sprite-sheet-tutorial-animating-a-flying-bird/309/ http://www.raywenderlich.com/1271/how-to-use-animations-and-sprite-sheets-in-cocos2d
在不使用Cocos2D的情况下尝试以下示例
http://www.dalmob.org/2010/12/07/ios-sprite-animations-with-notifications/
http://developer.glitch.com/blog/2011/11/10/avatar-animations-in-ios/
答案 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设备的内存太多了。
如果您遇到性能问题(即您是否在设备上运行?),那么您可以采取两项措施来提高图像加载速度:
在您的代码中,您执行动画
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA4444];
// load your images and do your anim
...
// at the completion of the anim
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];