[英]I need help creating a loop in dev console in firefox
我正在尝试使用开发控制台每5秒给马里奥一个蘑菇(在浏览器游戏中,超级马里奥html5)
我可以通过键入marioShroons(mario)手动给马里奥蘑菇加油,但我希望循环播放它,这样我就不必每次都想要蘑菇时暂停游戏。 我尝试了一个while循环并设置了超时时间,但是我无法弄清楚。 我唯一熟悉的编码语言是c ++和html。 **
while(data.time.amount > 0) {
killOtherCharacters()
}
setTimeout(function() {
killOtherCharacters()
}, 1000);
我希望这些代码行不会给我带来麻烦,而是会自动杀死敌人。 但是在第一次尝试(while循环)时,它冻结了选项卡,我不得不重新加载页面。
设置超时后,它没有产生任何明显的结果,它杀死了所有附近的角色,然后停止了。
while循环冻结页面的原因是Javascript一次只能做一件事,并且您告诉它始终运行while函数,从而阻止所有其他Javascript在您的站点上运行。
setTimeout在设置的时间后仅运行一次( 请参阅文档 ),如果您想每隔x毫秒运行一次,最好改用setInterval 。
var intervalID = window.setInterval(killOtherCharacters(), 500); //run this every 500 ms
如果要重复调用killOtherCharacters(),请使用setInterval。
const interval = setInterval(function() {killOtherCharacters() },1000);
然后,当您希望函数停止被调用时:
clearInterval(interval);
您尝试使用setTimeout
,它只能工作一次。 这是可以预期的,因为:
Window.setTimeout()
设置一个计时器,一旦计时器到期,该计时器将执行功能或指定的代码
从MDN
您需要做的是使用setInterval
:
setInterval()
方法...重复调用函数或执行代码段,每次调用之间有固定的时间延迟。
从MDN
因此,在控制台中,您应该这样编写:
setInterval(killOtherCharacters, 1000);
(我删除了匿名函数,因为它是不需要的-仅在传递参数或执行多项操作时才需要匿名函数。不过,您确实需要为此删除()
)。
并且,如果要停止执行该函数,请为该间隔分配一个变量:
var killCharacters = setInterval(killOtherCharacters, 1000);
然后对此变量调用clearInterval
以清除间隔(停止循环):
clearInterval(killCharacters);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.