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

问题描述 投票:0回答:1

我将setInterval放入代码中,但这显然将所有激光延迟了1秒。 我希望它按以下顺序工作: - 启动时激光1和激光2被激发。 - 1秒钟休息并开火另一套激光器等

此外,如果有人可以教我如何在论坛上移动所有代码块四个空格,这将是惊人的,因为我在谷歌找到的方式没有解决这个荒谬的问题。

代码快捷方式

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/ 激光是红色的

我想我应该使用布尔值,但无法设置它。 有一个类似的主题与密钥激活,但我失去了与基于布尔提出解决方案的人的联系(因为它不能很好地工作)所以我在不涉及密钥的情况下首先采取最简单的部分。

任何提示都很赞赏:)

javascript html loops
1个回答
0
投票

尝试将setInterval更改为setTimeout,因为它已经递归循环 - 只需添加一个延迟。同时将requestAnimationFrame调用移至draw的底部,而不是顶部:

function draw()
    setTimeout(createLasers, 1000);
    //Loops
    requestAnimationFrame(draw);
}
© www.soinside.com 2019 - 2024. All rights reserved.