2

谁能解释为什么提供的画布动画口吃?我创建了一个测试存根来演示这个问题。

我在桌面上的 FF、Chrome、IE 和 Android 上的 FF 和 Chrome 中看到了口吃。

口吃是因为垃圾收集吗?似乎 raf 在每次调用时都会生成一个 double,最终需要 gc。如果 gc 是原因,那么 html5 动画几乎是 doa。叹。

一年前问过同样的问题,但因为我是新成员,我无法联系作者以找出他的解决方案。HTML5 画布 DrawImage 口吃/断断续续。真是太糟糕了,新用户无法引起其他用户的注意,因为其他问题的作者可能拥有我正在寻找的信息,而根本没有发布。我试图发布他的问题以引起他的注意,但我在那里的帖子被删除为违反规则(这是)。估计我别无选择。代表的鸡和蛋问题。

4

1 回答 1

4

好的,所以在拔掉头发 1.5 天后,我想我有了答案。似乎浏览器与监视器同步,我想这是调用 requestAnimationFrame 的重点。在多显示器系统上运行时,同步机制似乎会混淆。我有三台显示器。当我断开除一台显示器外的所有显示器并重新启动浏览器时,问题似乎消失了。鉴于问题偶尔出现,这种情况是有道理的,即我猜测给定监视器何时与哪个监视器不同步,哪个监视器正在向浏览器提供 vsynch。

由于我不确定这一点,我希望其他人可以证实或否定我的理论。我将继续(重新)使用不同的显示器配置进行测试,但如果能得到另一个大脑和眼睛的确认,那就太好了。

编辑01:我并不完全疯了。 http://news.softpedia.com/news/Firefox-Nightly-Adds-Support-for-Vsync-for-Smooth-Animations-360245.shtml

编辑 02:一些 chrome 用户/开发人员发现了这个或相关的问题。最后可能会解决这个问题。请参阅https://code.google.com/p/chromium/issues/detail?id=422000。顺便说一句,IE11+ 没有这个问题。开始使用 IE11 进行基线测试,因为 chrome 最近遇到了 QA 问题。

编辑03:刚刚遇到这个类似的问答。第一个答案中的好信息。Chrome requestAnimationFrame 问题

于 2014-03-15T00:25:06.440 回答