无法让 JS setInterval 正常运行
Can't get JS setInterval to function properly
在我学习 JS 的过程中,我正在努力思考 JS 中的 setInterval() 方法。作为练习,我正在尝试生成大量花朵(目前只是矩形)。我想我可以使用 setInterval() 在不同的位置连续生成矩形,像这样:
var c = document.getElementById("primeCanvas");
var ctx = c.getContext("2d");
var xOffset = 10;
function generateFlower(x, y) {
"use strict";
ctx.fillStyle = "#FF0000";
ctx.fillRect(x + xOffset, y, 150, 100);
}
function addOffset(xPos)
{
"use strict";
xOffset+=xPos;
}
setInterval(addOffset(50), 900);
setInterval(generateFlower(10+xOffset,10), 1000);
但是,当我 运行 脚本时,只有一个矩形出现在完全相同的位置(或者可能出现更多矩形,但彼此重叠)。目的是每秒生成一个矩形,将 50 添加到矩形的 x 位置(在 HTML canvas 中)。
有人能看出为什么这不起作用吗?
指令setInterval(addOffset(50), 900);
首先执行addOffset(50)
然后安排结果在900ms之后执行。
我想你想在 900 毫秒后将作业安排到 运行 addOffset(50)
,所以你需要这样做:
let intervalId=setInterval(function(){addOffset(50);}, 900);
intervalId 对您取消计划作业很重要。
在我学习 JS 的过程中,我正在努力思考 JS 中的 setInterval() 方法。作为练习,我正在尝试生成大量花朵(目前只是矩形)。我想我可以使用 setInterval() 在不同的位置连续生成矩形,像这样:
var c = document.getElementById("primeCanvas");
var ctx = c.getContext("2d");
var xOffset = 10;
function generateFlower(x, y) {
"use strict";
ctx.fillStyle = "#FF0000";
ctx.fillRect(x + xOffset, y, 150, 100);
}
function addOffset(xPos)
{
"use strict";
xOffset+=xPos;
}
setInterval(addOffset(50), 900);
setInterval(generateFlower(10+xOffset,10), 1000);
但是,当我 运行 脚本时,只有一个矩形出现在完全相同的位置(或者可能出现更多矩形,但彼此重叠)。目的是每秒生成一个矩形,将 50 添加到矩形的 x 位置(在 HTML canvas 中)。
有人能看出为什么这不起作用吗?
指令setInterval(addOffset(50), 900);
首先执行addOffset(50)
然后安排结果在900ms之后执行。
我想你想在 900 毫秒后将作业安排到 运行 addOffset(50)
,所以你需要这样做:
let intervalId=setInterval(function(){addOffset(50);}, 900);
intervalId 对您取消计划作业很重要。