Использование jQuery + Javascript для воспроизведения HTML5 аудио элементов с пробелами - PullRequest
2 голосов
/ 11 марта 2011
var audioPlaying = false;

if (!audioPlaying) {
    // get a random audio element that has the class .sound
    audio = $('.s' + (Math.round(Math.random() * $('.sounds').size())));
    audio.get(0).play();
    audioPlaying = true;
    setTimeout(function(audioPlaying) {
        audioPlaying = false;
    }, 1000);
}

Я работаю над JavaScript, который воспроизводит звук на событии.Мне не нужно проигрывать более одного звука каждую секунду.У меня есть функция проверяет, воспроизводится ли звук (через переменную true / false), а затем, если это так, выбирает случайный элемент аудио и воспроизводит его.Затем переменная устанавливает, что звук воспроизводится (true), а затем устанавливает тайм-аут, чтобы переключить переменную обратно в false через 1 секунду.

Это должно сделать так, чтобы звук воспроизводился после как минимум 1второй.Тем не менее, похоже, что переменная audioPlaying никогда не устанавливает значение false.Воспроизводится один из звуков, и ни один после этого.Если я удаляю код, который изменяет audioPlaying на true, звуки воспроизводятся без промежутков между ними.

Кто-нибудь знает, что не так?

1 Ответ

0 голосов
/ 11 марта 2011

Попробуйте что-то вроде этого:

var audioPlaying = {
    _audioPlayingNow: false,

    playAudio: function()
    {
        if ( !audioPlaying._audioPlayingNow )
        {
            var audio = $('.s' + (Math.round(Math.random() * $('.sounds').size())));
            audio.get(0).play();

            audioPlaying._audioPlayingNow = true;
            setTimeout( audioPlaying._resetAudioPlaying, 1000 );
        }
        else
        {
            setTimeout( audioPlaying.playAudio, 1000 );
        }
    },

    _resetAudioPlaying: function()
    {
        audioPlaying._audioPlayingNow = false;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...