我在使用jquery構建Simon說遊戲http://codepen.io/meek/pen/adrbOv,我在逐個回放每個聲音時遇到了一些麻煩。爲什麼我的循環不會在迭代之間等待? setTimeout()
當遊戲開始時,會產生20個聲音(「移動」)的列表,每個回合會逐個播放。因此,如果移動列表是['紅色','黃色','綠色'],則將會播放一個'紅色',然後輪播兩個'紅色'和'黃色',依此類推。
我已經設置了輪到4,我試圖讓每個聲音一個接一個播放,直到播放4個聲音。我使用此代碼:
turn = 4;
var t = 1;
while(t <= turn) {
setTimeout(AIbutton(allMoves[t-1]), 1000);
t++;
}
AIbutton()
是播放聲音(模擬按下一個按鈕)和allMoves
是20個移動將在整個遊戲中扮演列表功能。我想讓它發生的是在循環的每次迭代中播放聲音,然後再進入下一次迭代,但是會發生的一種情況是循環中的所有聲音在1000 ms的時間間隔後同時迭代播放。
我以爲setTimeout會讓它在迭代之間暫停嗎?我怎樣才能做到這一點?
此代碼不正確 - 您需要將函數引用傳遞給'setTimeout'(例如匿名函數表達式),而不是調用'ourTimeout'的結果。 – Alnitak
這正是我所需要的,我明白爲什麼現在。謝謝! – mlamp