iphone动画帧速率和帧数

Dav*_*ave 2 iphone animation

我正在开发一个应用程序,客户想要为大图像制作动画(305x332).客户希望在1.75秒内使用50帧来循环动画.通过这么多处理,我发现应用程序非常慢.启动缓慢,响应触摸并关闭.在它自己的iPhone上,该应用程序将经常崩溃或锁定手机.请参阅下面的代码.我的问题:

  1. 我是在做一些导致性能不佳的事情,还是50帧不能问?
  2. 动画中的帧数和动画速度是否有最佳实践?
  3. 是否有动画中图像大小的最佳实践?

请告诉我.这是代码......

NSMutableArray *tempArray = [[NSMutableArray alloc] init];
for(int i = 1; i <= 50; i++)
{

    [tempArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"%@-%d-%04d.JPG",[constitution getConstitutionWord], constitution.getAnimationEnum, i]]];  
}


backgroundImage.animationImages = tempArray;
[tempArray release];
backgroundImage.animationDuration = 1.75; // seconds 
backgroundImage.animationRepeatCount = 0; // 0 = loops forever 
[backgroundImage startAnimating];   
Run Code Online (Sandbox Code Playgroud)

Ram*_*min 5

我前一段时间做了一些测试.在UIImageview动画放弃和接受之前,管理最大约40帧左右的20K PNG.

如果您需要更多,可以切换到使用视频或编写自己的动画渲染引擎.渲染引擎非常简单.它将在一个定时器上运行,该定时器从队列的头部获取已经加载的UIImage,更新视图然后释放图像.一个单独的线程在队列的尾端预先加载几帧.这样,在任何给定时间内存最多N帧.您可以调整它以找到计时器延迟和要为您的应用程序预加载的帧数之间的最佳平衡.

我工作的一个项目使用该技术显示数百个没有问题的大图像.

一些提示:

  • 尽可能多地使用CALayers.

  • 显示每个帧时不要进行任何缩放.尝试使每个源图像具有您想要显示的确切大小.

  • 尽量不要用其他视图覆盖动画.它会减慢速度.

  • 您可以从捆绑包中加载图像列表或扫描目录.捆绑的缺点是在不更新整个应用程序的情况下无法更新图像.从目录加载的缺点是,首次启动时,您必须将映像中的映像复制到可写位置,并且运行时的应用程序大小会变大.主要好处是您可以通过网络更新该目录中的媒体.

  • 声音同步变得有点冒险.您必须以自己的方式指定何时开始/停止声音.如果你有声音并且需要精确(如唇形同步),那么视频路线可能会更加实用.

祝好运.