我的 setInterval() 方法绝对疯狂



好的,所以我正在制作一个空闲游戏,这样您就不必每秒等待获得ozolith(游戏中的货币(,我创建了一个名为ops(ozolith per second(的变量,并做了一个setInterval((运行,如果这个人有2个操作,它将每.5秒运行一次。这在大多数情况下都有效,但有时它会发疯并决定它的速度与玩家有 1000 次操作一样快,因此它每 1 毫秒运行一次。下面是问题的根源代码,可帮助您找到答案。

ops = Math.floor(((reactors*10)+mines)*((alientransbought*colplanets)+1))
if(ops>=1){
setInterval(production,Math.floor(1000/ops)) //Production is just where it gives the ozolith and is not 
the root of the problem
}

与所有应用程序一样,Web 浏览器轮流占用一段 CPU 时间,并且它们必须等待的时间会有所不同,具体取决于负载。这就是导致异步计时器延迟的原因——200 毫秒的计时器实际上可能需要 202 毫秒或 204 毫秒,这将逐渐使秒表失去时间。

看看这个答案中引用的这篇文章。它解释了如何创建"高分辨率计时器"。

我发现了一些可以提供帮助的东西。通常,ops 变量的第二部分:((alientransbought*colplanets)+1))它通常保持在 0,除非您购买它,这是在游戏的后期。我发现它通常只有在你先买这个时才会出现,所以我想我很好。不过感谢您的帮助!

最新更新