Javascript 如何取消设置超时功能?
我正在制作一个增益系统,玩家随机获得30秒的增益/增益,然后移除自身。我有一个初始恩惠,它持续30秒,然后自动移除。我将恩惠名称“治疗恩惠”推送到一个空的Javascript 如何取消设置超时功能?,javascript,javascript-objects,dom-events,Javascript,Javascript Objects,Dom Events,我正在制作一个增益系统,玩家随机获得30秒的增益/增益,然后移除自身。我有一个初始恩惠,它持续30秒,然后自动移除。我将恩惠名称“治疗恩惠”推送到一个空的player.boons=[]数组中 然而,我在另一方面遇到了困难。假设敌人想“削弱”我的角色,并立即消除恩惠。因为我的恩惠的倒计时持续30秒,它会继续工作直到30秒结束,即使我给出移除的外观。(我仍然保持30秒的生命值) 我将此归因于setTimeout函数。如果我输入30秒,即使稍后(比如5-10秒之后),也要使setTimeout=0在接
player.boons=[]
数组中
然而,我在另一方面遇到了困难。假设敌人想“削弱”我的角色,并立即消除恩惠。因为我的恩惠的倒计时持续30秒,它会继续工作直到30秒结束,即使我给出移除的外观。(我仍然保持30秒的生命值)
我将此归因于setTimeout
函数。如果我输入30秒,即使稍后(比如5-10秒之后),也要使setTimeout=0代码>在接下来的30秒内,它仍将继续。只有在第一次第二次尝试时,才将setTimeout
设置为0。但这不是我想要的。我想要一个系统,在它的范围内完全停止恩惠,并移除它给玩家的所有当前健康增益
function applyBoonHealing(){
var blessedWind = setInterval(function(){
player.cc.hp += 1;
dom.setText("healthcounter", player.cc.hp);
}, 1000);
player.boons.push("Healing Boon");
postPlayerStatusEffectImage("images/lowerstrengthicon.jpg", "buff", "0", "2", "no");
dom.setText("healthcounter", player.cc.hp);
setTimeout(clearBoon, 30000);
function clearBoon(){
clearInterval(blessedWind);
if (player.boons.includes("Healing Boon", 0)){
var arrayIndex = player.boons.indexOf("Healing Boon", 0);
player.boons.splice(arrayIndex, 1);
}
dom.setText("healthcounter", player.cc.hp);
postPlayerStatusEffectImage("images/lowerstrengthicon.jpg", "buff", "0", "2", "yes");
}
}
clearTimeout()方法是此问题的解决方案:
var boonHandle = setTimeout(clearBoon, 30000);
(...)
clearTimeout(boonHandle); //To cancel your timer
您可以使用clearTimeout()方法
var mySetTimeoutFunc = setTimeout(clearBoon, 30000);
要停止此操作,您只需clearTimeout(mysettimeoutpunc)代码>
有关更多信息,请参阅此clearTimeout是一个停止超时的事件,请参阅下文
function myStopFunction() {
clearTimeout(myVar);
}