不能使用cancelAnimationFrame.什么也没发生(chrome)

Can't use cancelAnimationFrame. Nothing happens (chrome)

本文关键字:chrome cancelAnimationFrame 什么 不能      更新时间:2023-09-26

问题:我不能取消requestAnimationFrame使用的chrome识别的cancelAnimationFrame

我尝试了什么:我使用console.log但没有显示错误。我的控制台。记录了cancelAnimationFrame,我得到了undefined,而请求对应的记录很好。我还尝试了不同版本的cancelAnimationFrame,包括前缀版本:

cancelAnimationFrame
webkitCancelAnimationFrame
window.cancelAnimationFrame etc..

我还尝试将取消代码放入函数中,但正如预期的那样,这并不重要。

问题:为什么不能停止我的requestAnimationFrame?按我的方式取消行程值得推荐吗?


http://jsfiddle.net/p8hv15j4/2/


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)

requestAnimationFrame返回一个ID,这是您需要传递给cancelAnimationFrame的ID。

实际上,它的工作方式与set/clearTimeout完全相同-设置它返回一个标识符,然后取消标识符。