我有一个带有requestAnimationFrame的动画,当我重播它时,它变得越来越快,直到看不见为止。

function tirer(){

    var missile=document.getElementById("missile");
    var currt= missile.currentStyle ||window.getComputedStyle(missile);
    if ( parseInt(currt.bottom)<700)
    missile.style.bottom=parseInt(missile.style.bottom)+20+"px";
    else
    alert ( "in top");


}
function animation (){
    tirer();
    requestAnimationFrame(animation);

}

如何获得稳定,恒定的速度?

最佳答案

您可能多次调用animation()(例如,每当单击按钮时)。

每次调用animation()都会开始一个新的重复requestAnimationFrame()-> animation()-> requestAnimationFrame()-> animation()-> ...序列。

例如如果您两次调用animation(),则将运行两个这样的序列,并且帧速率将加倍。

您需要先取消当前正在进行的动画帧请求,然后再发送新请求。见How to stop a requestAnimationFrame recursion/loop?

10-08 04:29