Воспроизвести несколько аудио файлов в последовательности (Javascript) - PullRequest
1 голос
/ 24 сентября 2019

Может кто-нибудь объяснить это поведение?У меня есть кнопка, и когда она нажата, мне нужно последовательно воспроизвести 6 mp3-файлов.Я использую обработчик события onended:

var index;
playButton.onclick=function(){
  index = 0;
  conj[0].play();
  conj[index].onended = function() {
    if(index < conj.length){
      index++;
      conj[index].play();
    }
  };
}

С помощью строки index ++ в коде я пытаюсь увеличить индекс так, чтобы он воспроизводил следующий аудиофайл в массиве, как только текущий аудиофайл имеетзаконченное воспроизведение и т. д., пока не будет воспроизведен 6-й и последний аудиофайл в массиве.Но обошлись только один раз.другими словами, игравигается [0], затем срабатывает onended, а затем воспроизводится [1], вот и все.onended больше не стреляет.Теперь, когда я закомментирую "index ++;"линия, первый mp3-кон [0] воспроизводится, а onended продолжает стрелять, поэтому кон] [0] просто воспроизводится в цикле.Другими словами, onended продолжает работать, только если я не изменяю значение индекса.Я знаю, что это что-то глупое, но я потратил слишком много времени, пытаясь понять это.

1 Ответ

0 голосов
/ 24 сентября 2019

У вас обрабатывается только первое аудио-событие "onended".Когда эта строка называется.conj[index].onended = function() index было 0. То, что вам нужно сделать, это иметь цикл, который делает что-то вроде этого

for (var idx = 0; idx < conj.length - 1 ; idx++) {
conj[idx].onended = function() {
      conj[idx+1].play();
  };
}

Какой источник и обработчик для каждого аудио (кроме последнего), который говорит «Однажды я»Когда воспроизведение закончено, запускается воспроизведение следующего аудио. "

полный пример

var index;
playButton.onclick=function(){
  // sets up each audio file's onended event to play the next audio file
  for (var idx = 0; idx < conj.length - 1 ; idx++) {
    conj[idx].onended = function() {
      conj[idx+1].play();
    };
  }
  // start playing the first audio.
  conj[0].play();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...