setInterval(function, var) 中的变量不会随增量而更改/更新



我正在构建一个浏览器宠物饲养游戏。我的计划是使用 if/else 来确定宠物的 HP 掉落率应该是多少。如果低于一定的饥饿/幸福,HP会越来越快地下降。

我正在使用变量 setInterval,里面的值没有更新,但打印到控制台时值正在更新。

let hp = 100;
let dropHPWeight = 6000;
let dropHPCall = setInterval(dropHP, dropHPWeight);
function dropHP() {
hp = (hp % 360) - 1;
console.log(dropHPWeight);
dropHPWeight = dropHPWeight + 6000;
}

在这里,我每 6 秒降低一次 HP,然后作为测试,我看看它是否会增加,但它没有。

我哪里出错了?

正如一些人在评论中提到的,一旦启动setInterval,就无法更改间隔。 你最好使用setTimeout. 喜欢这个:

let hp = 100;
let dropHPWait = 6000;
function dropHP() {
hp = (hp % 360) - 1;
dropHPWeight = dropHPWait + 6000;
if (somecondition){
setTimeout(dropHP, dropHPWait)
}
}
dropHP()

现在你调用dropHP,这会改变间隔,然后在给定增量后使用setTimeout再次调用自身。 我将setTimeout放在一些条件中,因为您不希望它永远运行(因此您必须决定希望它在什么时候停止运行(。

最新更新