簡體   English   中英

我需要幫助在Firefox的開發人員控制台中創建循環

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM