iPhone动画帧速率和帧数

2023-12-02

我正在开发一个应用程序,客户想要为大图像 (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];   

我不久前进行了一些测试。在 UIImageview 动画放弃并停止之前,我设法最大程度地处理了大约 20K 个 PNG 的大约 40 帧。

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

我参与的一个项目使用该技术毫无问题地显示数百张大图像。

一些提示:

  • 尽可能多地使用 CALayers。

  • 显示每一帧时不要进行任何缩放。尝试使每个源图像具有您想要显示的精确尺寸。

  • 尽量不要用其他视图覆盖动画。它会减慢事情的进展。

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

  • 声音同步变得有点冒险。您必须想出自己的方式来指定何时开始/停止声音。如果您有声音并且需要精确(例如口型同步),那么视频路线可能更实用。

祝你好运。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iPhone动画帧速率和帧数 的相关文章

  • Grand Central Dispatch (GCD) 调度源标志

    我最近不再使用 to GCD 调度来源 https developer apple com documentation dispatch 1385630 dispatch source create监视文件更改 效果很好 API 也变得更加
  • 按升序对 NSDictionary 进行排序

    我正在尝试排序NSDictionary按升序排列 我正在使用这段代码 NSDictionary valDict self mGetDataDict key rowKey for NSString valueKey in valDict al
  • 如何订阅设备方向(非界面方向)事件?

    在我的应用程序中 我想在设备旋转 方向更改 的情况下调用 CCScene myscene 中的某些方法 我禁用了自动旋转 因为我希望它不会发生 问题是 我想根据我的设备方向改变场景中的重力 我的代码 void onEnter super o
  • 如何检测 UITableView 中某个单元格的双击?

    如何检测某个单元格上的双击UITableView i e 如果用户进行了一次触摸 我想执行一个操作 如果用户进行了两次触摸 我想执行另一个操作 我还需要知道进行触摸的索引路径 我怎样才能实现这个目标 Thanks 如果您不想创建子类UITa
  • 聊天室成员列表

    如何检索正在使用的聊天室的成员列表XMPP framework 我尝试使用 void xmppRoom XMPPRoom sender didFetchMembersList NSArray items 但它返回一个空数组 这个问题很老了
  • iOS:GMail API - 通过电子邮件发送附件

    我能够成功发送没有附件的电子邮件 但是 当我尝试使用 GTLUploadParamaters 上传附件时 出现 501 错误 我尝试添加照片库中附件的 NSData 以及仅发送图像的 URL 在这两种情况下我都得到了同样的错误 Create
  • iPhone触摸形状或原始数据

    有人知道是否可以检测触摸形状吗 也许通过获取原始触摸屏数据 我在这里找到了这个问题 答案 如何获取原始触摸屏数据 https stackoverflow com questions 789737 iphone raw touchscreen
  • 关闭子级后,父级 UIViewController 方向不应更改

    假设我有三个 UI 控制器 A B C A 是我的根控制器 在 ShouldAutoRotate 方法中我返回 YES 我从A到B呈现ModalView B gt 在ShouldAutoRotate方法中我返回Portrait 然后从B我向
  • iphone:使用 iOS 5 和 Xcode 4.2 提交应用程序? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个在
  • iPhone 中的 UIGlassButton

    有人使用 Glass Button 提交过申请吗 获得批准了吗 我正在尝试使用彩色圆形按钮 但不想使用这些技巧 如何在 iPhone 上设置按钮背景颜色 https stackoverflow com questions 372731 ho
  • 使用 NSJSONSerialization 解析 JSON

    对此进行了太多讨论 但我不知道如何解决我的问题 这是我从 WorldWeatherOnline 获取的 JSON 数据 JSON 有效 但我不知道如何解析它 这是我的代码 后面是 JSON 请帮忙 NSError errorInfo NSD
  • 使用 Mono Touch 的 Iphone 键盘顶部带有完成按钮的工具栏?

    我需要使用 UIkeyboard type 数字键盘在工具栏上添加完成按钮 以便在单击完成按钮时退出键盘 我使用了输入附件视图 但它也添加到普通键盘 我需要在我有数字键盘的地方添加这个 例如 我有一个文本字段 它只需要我需要的数字 除了我不
  • 客户端-服务器多人 (MMO) 游戏中的移动“算法”?

    我一直在编写一个 2D flash 多人游戏和一个套接字服务器 我最初的客户端和服务器之间的移动算法计划如下 The client informs the server about the player s movement mode mo
  • 为什么单个 Vec4 乘法会大大减慢我的 ogl es 2 片段着色器的速度?

    我正在为 iOS 设备编写 2D OpenGL 游戏 现在 我正在研究 iPad 第一代 上的性能 该游戏有 ogl 1 1 和 2 0 的代码路径 我可以通过 define 使用 ogl 2 0 时 分析器告诉我 我的渲染器利用率 相当稳
  • Facebook oauth/access_token 丢失

    不知道我是否错过了什么 但就这样 我正在尝试为我的应用程序获取 access token 以便它可以在 facebook 上查找某些公共群组的事件 而无需用户登录 我试图从中获取 access token 这将返回一个字符串 access
  • 自动调整大小完成后如何获取帧大小

    我想知道 如何以及何时 viewDidLoad viewWillAppear viewDidAppear 可以获得自动调整大小以适合其父视图的 UIViews 框架大小 从你的问题中不清楚你为什么想要它 但我想这是为了布局你的子视图 幸运的
  • Monotouch 和本机 iOS 代码

    是否可以将使用 monotouch 编译的 C 库与单个应用程序中的 Objective C 前端链接起来 或者该应用程序必须是全部还是全无 这是可能的 但您不会从 MonoTouch 工具获得任何帮助 并且您无法摆脱这样一个事实 您仍然需
  • 如何在ios中以编程方式添加水平间距和垂直间距?

    我在 ios 8 中创建了一个应用程序 因为我有 4 个可垂直使用的标签 它应该在某些条件下更改位置 所以我已禁用自动布局并以编程方式设置约束 现在的问题是 我可以设置水平和垂直位置 宽度和高度的约束 但我找不到任何方法来添加标签之间的水平
  • 如何使导航栏透明并淡出,就像 iPhone 中的照片应用程序一样

    我是 iPhone 编程新手 有人可以帮我吗 我想在iPhone中开发一个类似照片应用程序的应用程序 如何使导航栏和工具栏透明并淡出 就像 iPhone 中的照片应用程序一样 感谢你 UINavigationBar继承自UIView 所以你
  • 如何使用 afnetworking 在后台上传任务

    我正在尝试使用 AFNetworking 上传大文件 并在应用程序处于后台时继续上传 我可以很好地上传文件 但是当我尝试使用后台配置时 应用程序崩溃并显示以下堆栈跟踪 异常 EXC BAD ACCESS 代码 1 地址 0x8000001f

随机推荐

  • 扑克牌翻转动画

    您知道有哪些免费组件 库可以实现 3D 翻转效果吗 演示在这里 斯诺克电视 这是一个尝试使用SetWorldTransform type TForm1 class TForm PaintBox1 TPaintBox Button1 TBut
  • 使所有按钮大小相同

    请看下面的代码 import javax swing import java awt event import java awt public class GUI extends JFrame private JButton open pr
  • 为什么整个系统事件溯源是反模式?

    我目前正在设计一个新的企业系统 该系统的目的是跟踪 显示客户与公司的互动 即事件 并通知员工 使用事件源模式来保存所收集的所有客户交互 事件的分类帐似乎非常合适 因为我们所有其他域对象都源自事件流 然而 我看到一篇文章说基于事件源的整个系统
  • 不想在 jqGrid 页面加载后第一次显示排序图标

    我正在使用 jqGrid 并通过 JSON 加载数据 当我第一次获取数据时 我使用自定义方法对其进行排序并将该数据传递到网格 但它总是在第一列上显示排序图标 我不想显示该图标 因为自定义方法使用多个计算对数据进行排序 但是当排序图标出现在第
  • 如何使用 linq 对列表及其子项及其子项进行排序?

    我有一个亲子关系 类似于 public class MyType public IList
  • 未捕获的错误:元素类型无效:需要一个字符串(对于内置组件)

    I am getting this error I have defined all components in index js and I am using react dom 网络打包机本身正在编译 没有错误或警告 错误 未捕获错误
  • 使用@PropertySource配置Spring属性

    在下面的 Spring 配置类中 我通过 PropertySource 加载 app properties 文件 并使用属性文件中的配置构造 2 个不同的 DBCP 数据源 尽管一切正常 但我不喜欢使用注释为每个配置属性声明一个变量以构造数
  • 获取具有明确标准的最新文档

    情况 我无法找到执行特定 MongoDb 查询的好方法 首先 这是我想要执行的查询类型 假设有一个简单的数据库 通过电子刷卡记录进入和退出事件 以及可能的其他操作 并不重要 所以有一个集合叫做swipelog简单的文档如下所示 id Obj
  • 即使驱动器存在,也无法检索用户的 mysite URL

    当使用 PHP 库查询给定驱动器的图表时 我收到400 Unable to retrieve user s mysite URL or 429 Too many requests 例如 当我打电话时https graph microsoft
  • SQL WHERE 子句中的聚合函数

    大学考试时有一道题 是否可以使用聚合函数SQL WHERE条款 我一直认为这是不可能的 而且我也找不到任何例子如何做到这一点 但我的答案被标记为错误 现在我想知道在哪些情况下可以在WHERE 另外 如果不可能的话 最好能获得描述它的规范的链
  • PDO - 将字段名称作为变量传递

    我只是将代码从 mysql query 样式命令迁移到 PDO 样式 但遇到了问题 旧代码如下所示 query list menu SELECT GET section name from myl menu hide show WHERE
  • Vagrant ssh 'private_key_path` 文件必须存在

    我在 vagrant up 期间收到此错误 There are errors in the configuration of this machine Please fix the following errors and try agai
  • Java:使用itext读取PDF书签名称

    我正在处理包含多个文档的单个 PDF 每个文档都有一个书签 我需要读取我正在构建的调节应用程序的书签名称 下面的代码对我不起作用 我试图将书签名称放入title细绳 有人可以提供任何指导吗 非常感谢 PdfReader reader new
  • 防止 QScintilla 中触发键盘快捷键(示例代码)

    我想防止在 QScintilla 小部件中编辑代码时触发应用程序键盘快捷键 就像普通的 QLineEdit 字段不会触发一样 在下面的可执行示例代码中 无法在 QScintilla 小部件中键入空格 因为空格键已设置为快捷方式 但在 QLi
  • 使用 C# 将字符串表达式转换为整数值[重复]

    这个问题在这里已经有答案了 抱歉 如果这个问题已经得到解答 但我没有找到合适的答案 我在 C 中有一个字符串表达式 需要将其转换为 int 或十进制值 例如 string strExp 10 20 30 输出应该是 60 我该怎么办 Fwi
  • 斯威夫特||返回一个可由 API 调用中的其他方法使用的类

    我正在从移动应用程序调用 HERE Weather API 并且需要将当前天气作为对象返回 以便其他方法可以在给定时间段 例如 30 分钟更新间隔 内使用该信息 我根据这个网站对异步调用有了一个粗略的了解https fluffy es re
  • RestEASY 和 Jackson 不兼容 - NoSuchMethodException

    我将我的项目从JBoss AS 7 2 to 野蝇8 0经过一段时间的版本更新后 我不知道如何解决RestEASY and Jackson不兼容 In JBoss AS 7 2 I used RestEASY 3 0 6 Final and
  • 添加文本后缀

    我目前有很多这样的输入
  • 复选框的默认控件模板

    我找不到默认的 WPFControlTemplate for a CheckBox 有谁知道如何找到它吗 我所能找到的就是MSDN 上的 SilverLight 默认复选框模板 MSDN 有一个用于 WPF 复选框的自定义控件模板使用 X
  • iPhone动画帧速率和帧数

    我正在开发一个应用程序 客户想要为大图像 305x332 制作动画 客户希望在 1 75 秒内循环播放 50 帧动画 我发现该应用程序在进行如此多的处理时速度非常慢 启动 触摸响应和关闭都很慢 在 iPhone 本身上 该应用程序经常会崩溃