【发布时间】:2020-12-15 15:00:51
【问题描述】:
我有画布,上面绘制了许多矩形,以便制作一个网格。我想要的是在网格中一个一个地为每个矩形着色,直到每个矩形都被着色为黑色,然后再次选择其中的几个以同样的方式一个一个地着色为白色。我尝试了几种使用“for”循环和“setTimeout”的方法,但没有成功。 我最近开始使用 javascript,这就是我需要帮助的原因。
此代码仅包括网格的制作,因为该部分未解决:
var canvas;
var ctx;
canvas = document.getElementById('canvas');
ctx = canvas.getContext('2d');
tileW = 20;
tileH = 20;
tileRowCount = 25;
tileColCount = 40;
var tile = [];
for (c = 0; c < tileColCount; c++) {
tile[c] = [];
for (r = 0; r < tileRowCount; r++){
tile[c][r] = {
x: c * (tileW + 3),
y: r * (tileH + 3),
state: 'e'
}; //state e for empty
}
}
for (c = 0; c < tileColCount; c++)
for (r = 0; r < tileRowCount; r++) {
ctx.beginPath();
ctx.fillStyle = '#AAAAAA';
ctx.rect(tile[c][r].x, tile[c][r].y, tileW, tileH);
ctx.closePath();
ctx.fill();
}
}
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<canvas id="canvas" width='1000' height='600'></canvas>
<script type="text/javascript" src='data.js'></script>
</body>
</html>
【问题讨论】:
-
您有语法错误。在此行
for (c = 0; c < tileColCount; c++)之后,您缺少{ -
很抱歉,当我粘贴我在编辑器上编写的代码时,一定发生了这种情况。但问题不在于它使用 for 循环一一着色矩形。
标签: html for-loop canvas settimeout jss