Мне нужно сократить код, примерно так:
var k = 0;
setTimeout(function orange() {
x2 = x2 + 40;
y2 = y2 + 50;
for (var j = 0; j < 3; j++){
for (var i = 0; i < 7; i++){
ctx.beginPath();
ctx.arc((23+i*32)+j*74, 23+i*54, 15, 0, Math.PI * 2);
ctx.fillStyle='orange';
ctx.closePath();
ctx.fill();
if (x < 500) setTimeout(orange, ++k * 100);
}}}, 10);
Но при таком подходе, интервал выпада кругов на соблюдается.