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

问题描述

我正在创建一个“子弹地狱”风格的游戏,并且有多个 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);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)