在计时器上播放(html5)音频

时间:2011-08-30 01:26:32

标签: javascript html5-audio

我有一个页面需要根据数组的值播放声音(然后播放整个数组)。所以,例如,我有一个数组{1,0,0,0,1,1,0,1,0},我需要它们按顺序播放或暂停,1 =播放,0 =“暂停”。

到目前为止,我已经尝试了很多东西,但却无法让它按照我的预期运行。

我最接近的是:

$.each(myFinalList, function(i, playit){
    if(playit == 1){
        $("#results").append("Play..");
        setTimeout("playSound()", 3250);
    }
    else{
        $("#results").append("Nothing..");
        setTimeout("doNothing()", 3500);
    }
};

function playSound(){
    var snd = new Audio('');

    if(snd.canPlayType('audio/mp3')){
        snd = new Audio('sound.mp3');
    }

    snd.play();
}

function doNothing(){
    //dont do anything
}

这个问题是声音没有在适当的时间播放,几乎就像doNothing()没有被调用一样。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

试试这个:

http://jsfiddle.net/ZkE8B/12/

让我知道是否有帮助

编辑:http://jsfiddle.net/ZkE8B/15/清除每个完成周期的成绩单

答案 1 :(得分:1)

听起来你想按顺序遍历myFinalList的每个元素,但每次迭代之间都有一个超时。在这种情况下,您可能想要执行类似

的操作
function timer(index) {
    if (myFinalList[i] == 1) playSound();
    setTimeout(function() { timer(index+1); }, 3500);
}
timer(0);

将每隔3500毫秒迭代遍历myFinalList的每个元素,一次一个。