Ваша функция не имеет параметров:
function spawnRandomObject()
, но когда вы вызываете ее, вы передаете один:
spawnRandomObject(i);
Возможно, это должен был быть параметр
Еще я вижу, что вы правильно вызываете функцию случайное количество раз,
, но функция рисует прямоугольник в том же месте:
ctx.fillRect(posX, posY, 60, 60);
вы устанавливаете posX, posY
в начало, и они не меняются.
Так что да, вы действительно рисуете несколько друг над другом
Может быть, вы хотели сделать что-то вроде этого:
function spawnRandomObject(x, y, w, h) {
ctx.beginPath();
ctx.fillRect(x, y, w, h);
ctx.stroke();
}
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var rand = Math.floor((Math.random() + 1) * 8)
for (var i = 0; i < rand; i++) {
spawnRandomObject(i*15, i*8, 10, 10);
spawnRandomObject((rand-i)*8, i*6, 5, 5);
}
<canvas id="canvas"></canvas>