Javascript Can';不要使用cancelAnimationFrame。什么也没发生(chrome)
问题:我无法使用chromes识别的cancelAnimationFrame取消requestAnimationFrame 我尝试的内容:我使用了console.log,但没有显示错误。我在console.log中记录了cancelAnimationFrame,但我没有定义,而请求对应项记录得很好。我还尝试了不同版本的cancelAnimationFrame,包括前缀版本:Javascript Can';不要使用cancelAnimationFrame。什么也没发生(chrome),javascript,Javascript,问题:我无法使用chromes识别的cancelAnimationFrame取消requestAnimationFrame 我尝试的内容:我使用了console.log,但没有显示错误。我在console.log中记录了cancelAnimationFrame,但我没有定义,而请求对应项记录得很好。我还尝试了不同版本的cancelAnimationFrame,包括前缀版本: cancelAnimationFrame webkitCancelAnimationFrame window.cancel
cancelAnimationFrame
webkitCancelAnimationFrame
window.cancelAnimationFrame etc..
我还尝试将取消代码放入函数中,但正如预期的那样,这并不重要
问题:为什么我不能停止我的requestAnimationFrame?取消它是我的建议吗
requestAnimationFrame
返回一个ID,您需要将该ID传递给cancelAnimationFrame
事实上,它的工作方式与设置/clearTimeout的工作方式完全相同-设置它将返回一个标识符,然后您取消该标识符。@Ok有效。我不知道为什么我忘记了范围!非常感谢。
var elem = document.getElementById('test');
var currentPos = 0;
var requestAnimationFrame = window.requestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.msRequestAnimationFrame;
function fn() {
currentPos += 5;
elem.style.left = currentPos + "px";
if (Math.abs(currentPos) >= 900) {
currentPos = -500;
}
requestAnimationFrame(fn);
}
fn();
setTimeout(function() {
cancelAnimationFrame(fn);
}, 1000)