Я не могу понять это правильно. Итак, я делаю простой скрипт, который сообщает текущее время. audiocontainer - это аудио-элемент, а функция 0: mp3play() была предварительно решена. Идея состоит в том, чтобы сделать это:Воспроизведение двух файлов в строке в JavaScript
[play hourXX.mp3] -> когда заканчивается -> [play minutesXX.mp3] -> удалить слушатель, поэтому остановка.
- Проблема заключается в том:
Без функция removeEventListener(), то minuteXX.mp3 петли до бесконечности ("Это 12 и 54 минут ... 54 минут ... 54 минут .. .), потому что он держит запуска слушателя в конце.
с removeEventListener() Функция аудио не запускается вообще. у вас есть какие-либо идеи, почему?
Или, может быть, есть ли более простой способ играть 2 mp3 подряд?
function telltime() {
var d = new Date();
var h = d.getHours();
var m = d.getMinutes();
audiocontainer.addEventListener('ended', function() {
mp3play('./time/minutes/minute'+m.toString()+'.mp3');
audiocontainer.removeEventListener('ended', function(), false); // stop!
}, true);
mp3play('./time/hours/hour'+h.toString()+'.mp3');
}
В этой строке есть синтаксическая ошибка. Вот почему. 'function()' не имеет ничего другого (и на самом деле не имеет смысла) – Roman
Только для записи, вот моя логика (может быть, кто-то узнает из-за ошибки): Из того, что я знал, если бы вы хотели чтобы уничтожить EventListener, вам нужно было сослаться на него так же, как он был создан. Поэтому мне нужно было указать имя функции внутри removeEventListener. Поскольку я создал Listener с вложенной безымянной функцией (которая работала без проблем), я подумал, что буду ссылаться на нее только с помощью той же «name» - function(). – darekm