Javascript setInterval 一段时间后“崩溃”?

时间:2021-04-10 09:42:57

标签: javascript raphael intervals

我正在创建一个“子弹地狱”风格的游戏,并且有多个 setIntervals 函数用于生成敌人、单人、子弹、计时器以及 setIntervals 来测量不同对象之间的碰撞,以便它知道要做什么(例如受到伤害,增加生命等)。虽然代码运行良好,但过了一段时间(我试过多次运行,通常在 40-60 秒左右,但有时长达 5 分钟后),它基本上“崩溃”了 - 我的碰撞不再起作用,并且生成间隔类似于每秒一次。我试过弄乱 setInterval 计时器,但似乎没有任何效果,整个代码相当长,所以我将其粘贴到 pastebin here 中,感谢您的帮助!

否则,运行的间隔在这里:

let startGame = function(ev){
        bulletHellPopup.style.display = "none"
        if (isMouseUp === false && isEndlessOn === false){ //puting this in a conditional stops the spawnEnemy function from running multiple times
            isMouseUp = true;
            spawn = setInterval(spawnEnemy, 100); //manipulate this value to adjust spawn rate
            time =  setInterval(startTimer, 100)
            loadTime = Date.now();
        }; 
        if (isMouseUp === false && isEndlessOn === true){
            isMouseUp = true;
            spawn = setInterval(endlessSpawn, 150); //manipulate this value to adjust spawn rate
            time =  setInterval(startTimer, 100)
            loadTime = Date.now();
            spawnLivesVariable = setInterval(spawnLives, 10000);
            shootFunction = setInterval(spawnBullets, 75);
        }; 
    };
    let damage = function(ev){
        collision(playerCircle, bulletArray);
        //console.log(bulletArray.length)
    };

    let oneUp = function(ev){
        collisionLife(playerCircle, lifeArray);
    };

    let shooting = function(ev){
        collisionShoot(shootArray, bulletArray);
    };

    setInterval(damage, 50);
    setInterval(oneUp, 50);
    setInterval(shooting, 50);

0 个答案:

没有答案