gpt4 book ai didi

javascript - 防止 javascript setInterval 函数堆积

转载 作者:行者123 更新时间:2023-12-04 14:38:25 25 4
gpt4 key购买 nike

我有一个在点击事件上运行的函数,它对我的​​一些动画使用 javascript 的 setIterval(我正在做游戏)所以问题是如果用户在动画仍在显示时点击(setInterval 仍在执行) setInterval 在事件堆栈中堆积,或者这就是我发现的结果,因此要么破坏我的游戏,要么运行速度加倍(动画)。我的问题是有什么方法可以防止事件堆叠吗?我不希望 setInterval 叠加在之前的 setInterval 上,依此类推。我知道我可以像这样使用 clearInterval 函数:

  var timerInterval = setInterval(drawPlayerRunning, 50);
clearInterval(timerInterval);

但它并没有真正像我想要的那样工作,因为如果用户在函数仍在执行时多次单击怎么办,clearInterval 只会清除事件堆栈的最后一个事件,而保留所有先前的事件游戏”。知道如何防止此事件叠加,或者至少有效地移除它们吗?

最佳答案

您可以创建一个监视间隔状态的标志:1)

var isIntervalInProgress = false;
setInterval(function()
{
if ( isIntervalInProgress )
return false;

isIntervalInProgress = true;

drawPlayerRunning();

isIntervalInProgress = false;

}, 50);

或者只是一个超时,它会在完成后自行运行:2)

var func = function()
{
setTimeout(function()
{
drawPlayerRunning();
func();
}, 50)
}

随心所欲

关于javascript - 防止 javascript setInterval 函数堆积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13349576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com