[英]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.