javascript - 递归requestAnimationFrame() javascript循环直接跳到最后

标签 javascript function animation recursion

我正在尝试学习 JavaScript 动画。

我有一个带有 x 和 y 坐标的路径数组,我尝试通过递归来移动它。但它不是一次一步地移动框 (box[1]),而是直接跳到最后一个位置。如果我在循环中添加一个警报,那么动画将“起作用”,这样它只会在每个警报之间一次将框移动一步。

function followPath(){
    box1[1].style.left = path[index][0]+'px';
    box1[1].style.top = path[index][1]+'px';
    index++; //I put an alert("hi"); here and it "worked"
    if(index < path.length)
         requestAnimationFrame(followPath());

}

function buttonPress(){
    index = 0;
    followPath();
}

这是什么原因造成的?

作为旁注,当我尝试将变量传递给类似的递归函数时,我遇到了同样的问题,在我尝试将变量传递给它之前,该函数运行得很好。

谢谢。

最佳答案

requestAnimationFrame 的参数是一个函数,而不是函数返回什么。该行:

requestAnimationFrame(followPath());

应该是

requestAnimationFrame(followPath);

关于javascript - 递归requestAnimationFrame() javascript循环直接跳到最后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28478833/

相关文章:

javascript - 无法分配给函数调用

Java KeyEvent方 block 移动

android - 重复动画后延迟

html - 鼠标悬停后停止动画对象

javascript - 设置 innerHTML 会增加 HTML 节点数

javascript - Node Webkit (nw.js) 中的数据库和文件

python - 在 Python 中从另一个函数中调用一个函数

function - Verilog 中如何使用函数?

JavaScript 无法在 Livecycle 中运行

javascript 原型(prototype) - 找到我的问题