我正在制作一个胜利状态和失败状态的游戏。对于每个州,我想显示一个2-3秒的简短动画。第一个动画由60个PNG组成,速度为30 fps,第二个动画由80个PNG组成,也是30fps。我已经尝试了各种方法,并广泛搜索了一个解决方案,但我一直发现的前两个结果是使用UIImageView animationImages和Core Animation。使用UIImageView在模拟器中工作得非常好,但需要永远在设备上第一次运行。我认为这是因为图像需要加载到内存中。我正在使用“imageNamed”来填充animationImages数组,但我猜他们需要在第一次调用动画时渲染?我曾尝试在应用程序加载时预渲染它们,并且这看起来有诀窍,但预渲染所有这些图像需要近10秒,这不方便用户使用。我也会开放使用核心动画,但我对它的知识非常有限,所以详细的解释将不胜感激。谢谢!什么是动画iPhone上的图像序列的最佳方式?
当你说我需要在应用程序启动时加载所有内容时,你究竟是什么意思?现在,我初始化动画图像的两个数组时,应用程序加载,这样的:
// Create thinnestAnimation Array
thinnestAnimation = [[NSMutableArray alloc] init];
for(int i = 1; i <= 60; i++)
{
UIImage *thinImage = [UIImage imageNamed:[NSString stringWithFormat:@"ThinnestJump_%d.png", i]];
[thinnestAnimation addObject:thinImage];
}
thinAnimationImageView.animationImages = (NSArray *)thinnestAnimation;
thinAnimationImageView.animationDuration = 2.0;
thinAnimationImageView.animationRepeatCount = 1;
thinAnimationImageView是我的接口一个IBOutlet,我打电话[thinAnimationImageView startAnimating];
当我想动画图像序列。这在第一次通话中严重滞后,但此后很好。无论如何阻止它第一次落后?
对不起,动画的计算成本很高。苹果公司尽可能地写了UIImageView。用它。 – 2012-08-13 05:03:34
如果您已经预渲染了您只想依次绘制的帧,Core Animation将无法真正帮助您;对于涉及移动或转换现有图像(或一组图像)和/或添加某些特殊效果的动画而言更是如此。现在,如果您想要的视觉类型符合该描述,则可以使用CA而不是图像序列。 – rickster 2012-08-13 05:26:55
你也可以看看你可以做什么来优化你的图像。他们有阿尔法?他们真的需要它吗?屏幕的大面积是否会改变每一帧,或只是一小部分?视频是否可以更好地发挥作用? – rickster 2012-08-13 05:28:04