#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. решаемая проблема, необходимо использовать установленный интервал, поскольку его необходимо постоянно повторять, также создание объекта должно быть выведено из цикла рисования