我想讓西蒙說遊戲。我有一個函數遍歷數組數組。每個數字都與一個動作相關聯(所以適當的按鈕動畫)。當序列只有1個值時,這個工作正常,但是他們都只是一次玩。我已經找到了在迭代之間加入延遲的方法,但是對於包含if/else語句的循環沒有任何發現。延遲在for循環中有if/else語句的迭代
我想一個解決方案,我發現here:
function show_sequence() {
var k = right_seq.length;
//assign each button a number
//when the loop goes over it that button's animation plays
(function animation(i) {
setTimeout(function() {
if (i == 1) {
setTimeout(function() {
TweenMax.from("#pink", 0.6, {opacity:0.3, scale:0.8, ease:Elastic.easeOut});
one.play();
}, 1000);
} else if (i == 2) {
setTimeout(function() {
TweenMax.from("#blue", 0.6, {opacity:0.3, scale:0.8, ease:Elastic.easeOut});
two.play();
}, 1000);
} else if (i == 3) {
setTimeout(function() {
TweenMax.from("#yellow", 0.6, {opacity:0.3, scale:0.8, ease:Elastic.easeOut});
three.play();
}, 1000);
} else {
setTimeout(function() {
TweenMax.from("#green", 0.6, {opacity:0.3, scale:0.8, ease:Elastic.easeOut});
four.play();
}, 1000);
}; //end for loop
if (--i) {
animation(i);
}
}, 200);
})(k);
}
和它的作品,因爲它增加了動畫和聲音之間的延遲,但它並沒有以正確的順序播放。例如,如果數組爲[3,4,1,2],則不會將動畫放置在這些按鈕上,但是按[4,3,2,1]順序排列,並且它不能運行超過4輪。
這是fiddle但遊戲沒有完成,所以我不知道它是否會有所幫助。按下小綠圈開始/繼續添加回合。
一個更好的辦法可能是使用['動畫()'](http://api.jquery.com/ animate /)和它的「完成」回調。 – DelightedD0D