воспроизведение (html5) аудио по таймеру - PullRequest
1 голос
/ 30 августа 2011

У меня есть страница, которая должна воспроизводить звук в зависимости от значения массива (и воспроизводить весь массив).Так, например, у меня есть массив {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 ]

4 голосов
/ 30 августа 2011

Попробуйте это:

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

дайте мне знать, если это поможет

edit: http://jsfiddle.net/ZkE8B/15/ очищает стенограмму при каждом завершении цикла

1 голос
/ 30 августа 2011

Звучит так, будто вы хотите перебирать каждый элемент myFinalList по порядку, но с интервалом между каждой итерацией. В этом случае вы, вероятно, захотите сделать что-то вроде

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

, который будет перебирать каждый элемент myFinalList, по одному, каждые 3500 миллисекунд.

...