取消请求动画设置时间后的帧
Cancelling requestAnimationFrame after set amount of time
我有以下JavaScript:
function animate() {
// call other function
offset += 3;
if (offset > 15) offset = 0;
/// make the animation loop loop
var request = requestAnimationFrame(animate);
}
然后在我的 HTML 中:
<body onload="animate()" >
这一切都工作正常,它使动画不断循环,这很棒。但是我想弄清楚如何让这个动画运行 4 秒然后停止。
"调用其他函数"只是一条向下移动然后自行重置的线,给人一种沿着一段路移动的印象。目前,这一切都是在 Canvas 中完成的。
任何帮助将不胜感激!
您可以使用 requestAnimationFrame
的参数,即以毫秒为单位的经过时间 - 这将给你一个非常准确的时间:
function loop(elapsedTime) {
if (elapsedTime >= 4000) return; /// break loop after 4 seconds
requestAnimationFrame(loop); /// provides elapsed time as arg. to loop
}
/// start loop with rAF to get a valid argument first time:
requestAnimationFrame(loop);
在线演示在这里
来自 MDN 的文档:
回调方法传递单个参数,即 DOMHighResTimeStamp,指示时间,以毫秒为单位,但 最小精度为 10 μs,计划重涂 发生。
您可以像这样检查 4000 毫秒的运行时间:
var start = Date.now();
function animate() {
if(Date.now()-start>4000){return;}
requestAnimFrame(loop);
// do stuff
};
这样,您可以在使用 RAF 调用下一个循环之前退出(因此无需取消)。
相关文章:
- 更改默认时区后,如何在本地时间设置时刻格式
- 使用HTML5 Navigation Timing API时,导航开始时间设置为0
- 具有完整时间设置的嵌套 JQuery 动画
- 清除间隔在 6 个时间设置后不起作用间隔
- JQuery 日期选择器 - 根据当前时间设置 MinDate
- 通过Javascript错误将考试时间设置为30分钟
- 如何将东部标准时间设置为日期选择器 (jquery ui) - 使用 javascript
- 如何在javascript中将当前时间设置为其他时间
- 使用JS根据时间设置列的背景颜色
- 如何将一些指定的时间设置为ajax调用,这样如果请求正在花费时间检索数据,它应该来到FAIL块
- 如何将时间设置为定期?JAVA
- 根据一天中的时间设置默认选项的选定值
- 将默认时间设置为mobisroll时间选择器
- 如何在正确的时间设置JS事件
- 客户端时间设置在javascript中破坏了可读日期
- jQuery Timepicker和jQuery Datepair:如何将结束时间设置为15分钟
- Bootstrap DateTimePicker将时间设置为午夜
- 如何将这种日期时间设置为“2013-03-12T22:15:40+08:00”到“12 Mar 2012 02:15:4
- 使用php服务器时间设置Javascript时间
- 如何实现将新的Firebase自定义身份验证最大过期时间设置为1小时的用例