For循环无法运行,我希望它如何运行

Bob*_*ith 3 javascript for-loop processing.js

for循环不会像我期望的那样运行。我希望for循环只能运行一次,但是当我运行它时,它将显示一个动画。

我正在使用的编程环境:https : //www.khanacademy.org/computing/computer-programming/programming/arrays/pp/project-make-it-rain

var xPositions = [200];
var yPositions = [0];

draw = function() {
    background(204, 247, 255);

    for (var i = 0; i < xPositions.length; i++) {
        noStroke();
        fill(0, 200, 255);
        ellipse(xPositions[i], yPositions[i], 10, 10);
        yPositions[i] += 5;
    }

};
Run Code Online (Sandbox Code Playgroud)

当我们说时i++,条件i < xPositions.length不再成立。

那么,为什么循环不止一次运行呢?

有人告诉我,因为永远调用draw函数,所以循环也将永远被调用。

但是,第二次尝试运行该循环,则不满足for循环的条件,因此不应运行。

谢谢。

块引用

块引用

Cod*_*ice 5

我希望for循环只运行一次

这是正确的期望...仅需加上一点:for循环每个函数调用仅运行一次。如果draw()多次调用该函数,则它将在每次调用该函数时执行循环。

draw()创建动画的单个帧。在这种情况下,您将雨滴向下移动5个像素,然后将其渲染到新位置。但是要获得动画,您需要draw()每秒调用几次。这类似于在每页上绘制一个稍有不同的火柴人来翻转笔记本电脑的角落,以产生运动的幻觉。draw()在您的编程环境中会照顾到重复的调用。

您在其中编写的for循环draw()旨在遍历每个雨滴。在这种情况下,您只有一个。我建议在不同位置添加3或4个雨滴。然后,您将看到for循环如何在每个雨滴上迭代,将每个雨滴下移5个像素。然后,您在Kahn Academy上的编程环境将draw()每秒为动画中的每一帧调用几次。