我正在制作一个有胜利状态和失败状态的游戏。对于每个状态,我想显示一个 2-3 秒的短动画。第一个动画包含 60 个 PNG,速率为 30 fps,第二个动画包含 80 个 PNG,同样为 30 fps。我尝试了各种方法,并广泛搜索了解决方案,但我一直发现的前两个结果是使用 UIImageView 动画图像和核心动画。在模拟器中使用 UIImageView 效果很好,但第一次在设备上运行需要很长时间。我认为这是因为图像需要加载到内存中。我正在使用“imageNamed”来填充animationImages数组,但我猜他们需要在第一次调用动画时渲染?我已经尝试在应用程序加载时预渲染它们,这似乎可以解决问题,但是预渲染所有这些图像需要将近 10 秒,这对用户不友好。我也愿意使用 Core Animation,但我对它的了解非常有限,因此非常感谢详细的解释。谢谢!
当您说我需要在应用程序启动时加载所有内容时,您到底是什么意思?现在,我在应用加载时初始化两个动画图像数组,如下所示:
// 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];
当我想要为图像序列设置动画时我会调用它。这严重滞后于第一次通话,但此后很好。有没有办法防止它第一次滞后?