我正在使用Phonegap为iPad创建一个游戏,这意味着我在iPad上使用了JavaScript/ CSS/ HTML。基本上,我在1024x768分辨率上移动了很多img元素(有时会改变它们的src),只是没有任何网络连接的本地文件。在桌面Safari上,一切都很顺利,但在iPad上,我的setInterval感觉延迟和闪烁。你有没有什么速度优化的建议,我可以试试?谢谢!
PS:我知道切换到iOS的原生Objective-C可能会快得多,但我真的很想用标准的JS/HTML/CSS来尝试一下。
发布于 2010-07-09 22:33:26
你已经遇到了动画网页最常见的浏览器脚本问题之一。
应用程序变慢的原因是因为浏览器是单线程环境。一旦你忘记你会有麻烦的时候。
setInterval让您相信您的操作将并行进行,就像在多线程环境中一样。但实际发生的情况是,setInterval会将操作推送到UI堆栈,以便稍后处理。但是,如果一次进入这个堆栈的东西太多,一些操作将会延迟。setInterval将继续推送新的操作,但旧的操作将仍然存在,整个渲染过程将变得缓慢而混乱。
至于何时发生,则取决于硬件/软件功能。很明显,与台式PC相比,iPad的性能要低得多。
你可以做的事情,以避免滞后。
setInterval非常相似,不同之处在于它不能确保两次重复之间的给定间隔,而是侧重于浏览器应等待多长时间才能重复操作。因此,为了使它更像setInterval,您可能需要跟踪操作之间经过的时间,并计算必须注意的更改度量of.setInterval:您可以为一些相关动画设置一个间隔(您为它们管理一个微型队列),因此您可以减少实际的setInterval调用,并获得更多控制竞态条件的能力。另外,请务必阅读这篇文章:
script.aculo.us)的创造者 (Thomas Fuchs
发布于 2010-09-20 23:17:36
使用使用GPU加速的CSS3动画...这将对任何动画产生巨大的影响。
https://stackoverflow.com/questions/3213307
复制相似问题