gpt4 book ai didi

iphone - iPhone sdk 中最简单的逐帧动画技术是什么?

转载 作者:搜寻专家 更新时间:2023-10-30 19:43:21 26 4
gpt4 key购买 nike

我已经为 iphone 平台开发了大约 3 个星期,我正在尝试使用 16 个 1000x1000 png 图像(具有透明度)设置逐帧动画,并计划稍后使用大约 100 个进行动画处理,所以首先,我尝试使用 imageNamed 为所有图像制作动画,如下所示


-(IBAction)startClick1:(id)发件人
{
cloud.animationImages = [NSArray arrayWithObjects:
[UIImage imageNamed: @"g0000.png"],
[UIImage imageNamed: @"g0001.png"],
[UIImage imageNamed: @"g0002.png"],
[UIImage imageNamed: @"g0003.png"],
[UIImage imageNamed: @"g0004.png"],

现在这在模拟器中运行良好,但是当它到达设备时,设备在第一次尝试动画时只是重新启动,可能是由于 imageNamed 的已知内存问题,所以在做了一些研究后我发现 imageWithContentsOfFile 应该是不缓存图像,并希望在请求播放动画时不会导致 iphone 重新启动,所以我将代码更改为如下所示:

- (IBAction)startClick:(id)发件人
{
gordon.animationImages = [NSArray arrayWithObjects:
[UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"g0001.png"ofType:nil] ],
[UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"g0002.png"ofType:nil] ],
[UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"ge0003.png"ofType:nil] ],
[UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"g0004.png"ofType:nil] ],
[UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"g0005.png"ofType:nil] ],
[UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"g0006.png"ofType:nil] ],

现在这在模拟器中运行有问题,并且不能像 imageNamed 方法那样在设备上运行。那么,为一系列图像制作动画并在设备上运行良好的最佳和最简单方法是什么?哦,在回答时请记住我是这个平台的新手。

最佳答案

imageNamed: 和 imageWithContentsOfFile: 之间的一个主要区别是 imageNamed 返回一个已经预解压缩的图像。

通过查看 this answer,您可以创建自己的“优化”版本而不需要缓存图像。 .

现在,我注意到您正在加载 1000x1000 的图像,但屏幕尺寸仅为 320x480。你是在缩小图像尺寸、裁剪还是什么?如果要缩小比例,请考虑预先缩小图像。另外,您的动画是 30fps 还是更像幻灯片动画?

最后,我建议按需加载动画帧。如您所见,1000x1000 图像占用太多内存,无法保持加载优化。如果你一次只在内存中保留一个,你就不会崩溃,但是你必须非常小心代码中的任何暂停。如果您正在制作幻灯片“ken burns”类型的效果,您可以预先优化(解压缩)一张图像以在幻灯片播放期间进行绘制。

如果您要达到 30fps,则需要减小图像尺寸以提高速度。

关于iphone - iPhone sdk 中最简单的逐帧动画技术是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/992770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com