我有这段代码:
function gamePlay(array){
$.each(array, function(index, value){
$("." + sounds[value]).trigger("play");
});
}
该函数获取一个包含值(类名)的数组。我想在数组的每次迭代中播放声音。但是,相反,我会立即播放所有声音。我尝试过使用setTimeout,但它又做了同样的事情。我需要一些能够停止/暂停迭代的东西,直到触发声音完成。
答案 0 :(得分:0)
您可以像这样设置超时功能。假设所有声道具有相同的持续时间。
function gamePlay(array){
var duration = 1000; //1000ms
$.each(array, function(index, value){
(function(value, index){
setTimeout(function(){
$("." + sounds[value]).trigger("play");
}, index * duration);
})(value, index);
}
}
答案 1 :(得分:0)
尝试这样的事情: -
function gamePlay(array){
playSound(array, 0);
}
function playSound(array, index){
if((index+1) < array.length){
$("." + sounds[array[index]]).on('ended', function() {
playSound(array, ++index);
});
}
$("." + sounds[array[index]]).trigger("play");
}
这是未经测试的,但会介绍如何在上一个完成后触发下一个声音。