【问题标题】:playing (html5) audio on a timer在计时器上播放(html5)音频
【发布时间】:2011-08-30 12:17:44
【问题描述】:

我有一个页面需要根据数组的值播放声音(并播放整个数组)。因此,例如,我有一个数组 {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() 一样。

有什么想法吗?

【问题讨论】:

    标签: javascript html5-audio


    【解决方案1】:

    试试这个:

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

    如果有帮助请告诉我

    编辑:http://jsfiddle.net/ZkE8B/15/ 在每个循环完成时清除成绩单

    【讨论】:

    • 史诗。这几乎就是我想要的!谢谢!
    【解决方案2】:

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

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

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

    【讨论】:

    • 我认为 myFinalList[i] 根据您的方法签名应该是 myFinalList[index]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2019-12-14
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 2013-06-12
    相关资源
    最近更新 更多