Добавление задержки для работы во время рисования объектов

#javascript #html #loops

#javascript #HTML #циклы

Вопрос:

я поместил setInterval в код, но это, очевидно, задерживает все лазеры на 1 секунду.
Я хочу, чтобы он работал в следующей последовательности:
— при запуске запускаются laser1 и laser2.
— 1 секундный перерыв и запуск другого набора лазеров и т. Д.

Также, если бы кто-нибудь мог научить меня, как переместить весь блок кода на четыре пробела на форуме, это было бы удивительно, поскольку ни один из способов, которые я нашел в Google, не решает эту нелепую проблему.

Ярлык кода:

 let laser1;
let lasers1 = [];
let laser2;
let lasers2 = [];

function createLaser() {
    laser1 = new Laser(bossOne.x, bossOne.y   bossOne.sizeY, 10, 50, 5);
    lasers1.push(laser1);
    laser2 = new Laser(bossOne.x   bossOne.sizeX - 10, bossOne.y   
    bossOne.sizeY, 10, 50, 5);
    lasers2.push(laser2);
}


function draw() {
requestAnimationFrame(draw);

setInterval(createLaser, 1000);

for (i = 0; i < lasers1.length; i  ) {
    lasers1[i].show();
    lasers1[i].move();
}
for (i = 0; i < lasers2.length; i  ) {
    lasers2[i].show();
    lasers2[i].move();
}

}

requestAnimationFrame(draw);
 

Удаленный хост для полного кода, если необходимо:
https://stacho163.000webhostapp.com /
лазеры красные

Я думаю, что я должен работать с логическими значениями, но не могу справиться с установкой его там.
Получил похожую тему с активацией ключа, но я потерял контакт с тем, кто предложил решение на основе логических значений (так как оно плохо работало), поэтому я сначала выбрал самую простую часть, не привлекая ключи.

Любые советы приветствуются 🙂

Ответ №1:

Попробуйте изменить setInterval на setTimeout , поскольку он уже рекурсивно повторяется — просто добавьте к нему задержку. Также переместите requestAnimationFrame вызов в нижнюю часть draw , а не в верхнюю:

 function draw()
    setTimeout(createLasers, 1000);
    //Loops
    requestAnimationFrame(draw);
}
 

Комментарии:

1. решаемая проблема, необходимо использовать установленный интервал, поскольку его необходимо постоянно повторять, также создание объекта должно быть выведено из цикла рисования