问题标签 [requestanimationframe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
55359 浏览

javascript - 如何使用 requestAnimationFrame?

我是动画新手,但我最近使用setTimeout. FPS 太低,所以我找到了使用的解决方案requestAnimationFrame,在此链接中进行了描述。

到目前为止,我的代码是:

这在第一帧期间停止。我在函数requestAnimFrame(animloop);中有一个回调chopElement函数。

此外,是否有更详尽的使用此 API 的指南?

0 投票
1 回答
3523 浏览

google-chrome - 为什么在画布上绘制动画 gif 仅在重新选择选项卡后才会更新?

我想在画布上显示一个动画 gif,并应用了一些转换。为了进行测试,我目前只是尝试在画布上显示动画 gif,因此它本质上等同于将 gif 显示为常规<img>标签。

我正在使用 Chrome 和webkitRequestAnimationFrame. 在每个请求帧上,我都会绘制图像。当 gif 帧发生变化时,这应该反映在画布上。这仅部分有效:

  • 仅仅看画布并不能让它更新。相反,开始绘制一个静止的帧。
  • 重新选择选项卡(即选择另一个选项卡并再次选择画布选项卡)确实会将其更新为新框架,但之后它会再次冻结。

这是我设置的小提琴:http: //jsfiddle.net/eGjak/93/

如何在画布上绘制动画 gif并使其实际动画化

0 投票
2 回答
922 浏览

javascript - 供应商前缀“requestAnimationFrame”实现之间有什么区别?


编辑:这个问题现在只具有历史意义:

似乎已经删除了供应商前缀和特定于供应商的行为。

如果您愿意,请随意询问有关如何模拟旧的供应商特定行为的问题。


Chrome、Firefox、Internet Explorer 和 Opera 可能requestAnimationFrame分别具有不同的功能:

  • webkitRequestAnimationFrame
  • mozRequestAnimationFrame
  • msRequestAnimationFrame
  • oRequestAnimationFrame

规范非常清楚它们应该共享哪些行为,但是有人对它们的不同之处有权威的回答吗?

编辑:暂时,我接受我自己的答案。我仍然对 IE 10 的实现细节感兴趣,如果 Opera 实现它,Opera 的;如果有任何重大差异,我会更新问题。

0 投票
1 回答
1793 浏览

javascript - 为什么 requestAnimationFrame 函数接受一个元素作为参数?

我只是想了解为什么地狱window.requestAnimationFrame接受第二个参数作为元素,这背后的原因是什么?

我很想知道这个函数的底层执行......

0 投票
3 回答
28693 浏览

jquery - 为什么 jQuery 不使用 requestAnimationFrame?

有些浏览器支持requestAnimationFrame,为什么不使用呢?毕竟从 Google Chrome 10 开始就支持了。尽管如此,jQuery似乎并没有使用它。我发现了一个关于它的错误报告,但没有给出真正的解释?不过,我确信 jQuery 人有他们的理由。

他们为什么不使用这个很棒的 AP​​I?

0 投票
1 回答
2299 浏览

javascript - 想要控制动画的 FPS 是否是继续使用 setTimeout 而不是 requestAnimationFrame 的好理由?

我想知道是否应该将游戏切换到 requestAnimationFrame。如果还有理由再这样做,正如我所读到的,当您在主要浏览器中切换选项卡时,setTimeout() 现在也会暂停。

无论如何,假设我想控制动画的 FPS。

目前我可以这样做:

k.settings.engine.fps想要的fps在哪里。

如果我这样做requestAnimationFrame,我就失去了这种可能性,它只会给我它所能给的一切:

我看到有人建议将 requestAnimFrame 放在另一个循环中:

所以......我应该怎么做?保持原状?

requestAnimationFrame 的确切好处是什么,现在 setTimeout 在切换选项卡时也会暂停?

0 投票
11 回答
65016 浏览

javascript - 使用 requestAnimationFrame 在 Canvas 中计算 FPS

如何计算画布游戏应用程序的 FPS?我看过一些例子,但没有一个使用 requestAnimationFrame,我不确定如何在那里应用他们的解决方案。这是我的代码:

顺便说一句,我可以添加任何库来监督性能吗?

0 投票
3 回答
362 浏览

javascript - 为什么在这行代码中乘以 0.002:new Date().getTime() * 0.002;

在下面的代码中乘以 0.002 有什么特殊用途吗?

这段代码摘自这里。我还提供了下面的整个代码:

0 投票
5 回答
11413 浏览

javascript - 在声明时立即调用 Javascript 匿名函数,不起作用,稍后再调用它

[answered]

我正在为 html5 游戏测试浏览器的 fps。
我有这个代码:

它在 Chrome 上给出以下错误:
Uncaught Error: TYPE_MISMATCH_ERR: DOM Exception 17
在第 27 行:requestAnimationFrame( step );

W3 说这个错误是:If the type of an object is incompatible with the expected type of the parameter associated to the object.
但我实际上并没有与 DOM 交互,除了window

但是,如果我删除分配给的匿名函数的调用括号,step而只是声明该函数并在新行上放置:
step();

有用。
为什么是这样?
两者不应该一样吗?

0 投票
1 回答
781 浏览

javascript - setTimeOut 产生 233 fps 而 requestAnimationFrame 产生 61

我在 Chrome 上做了一些测试并requestAnimationFrame产生了 61 fps,而setTimeOut( callback, 0 )产生了 233 fps。
如果一个人想要超过 61 fps(我不确定这是为了什么)但是使用 setTimeOut 渲染并使用 requestAnimationFrame 来检测窗口何时失去焦点然后停止超时直到焦点不是更好回报?

还有一个附带的问题:除了 requestAnimationFrame 不调用回调之外,还有其他方法可以检测窗口何时失去焦点?