在绘制对象期间增加功能延迟

时间:2019-04-16 21:55:07

标签: javascript html loops

我将setInterval放入代码中,但这显然将所有激光器延迟了1秒钟。
我希望它按以下顺序工作:
-在启动时,激光器1和激光器2被发射。
-休息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 个答案:

答案 0 :(得分:0)

请尝试将setInterval更改为setTimeout,因为它已经递归循环-只需增加一个延迟即可。还将requestAnimationFrame调用移到draw的底部,而不是顶部:

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