2014-01-14 2 views
2

Я пытаюсь предварительно загрузить аудиофайлы для игры. Я использую Jplayer. У меня есть наложение, которое удаляется после того, как все аудио было предварительно загружено. В Firefox иногда можно проиграть, а иногда и нет. У меня есть пять аудиофайлов, иногда я получаю три события с участием canplaythrough, иногда четыре, не часто я получаю все из них. Если я регистрирую, какие из них работают, событие не всегда запускается или нет, в тех же аудиофайлах.canplaythrough firing intermitently in firefox

Я попытался как можно больше сломать код. Здесь я добавляю новый экземпляр Jplayer для каждого аудиофайла, я все равно получаю ту же проблему.

{

 for(var i = 0; i < _timeOutAudioFilesToLoad; i++){ 
      c = i + 1; 
      var elid = "timeOutAudio"+c; 
      var elt = '<div id="'+elid+'" class="audioPlayer audio-player" data-audio-file="/themes/foo/sounds/time'+c+'.mp3"></div>'; 
      $("#jPlayers").append(elt); 
      $("#"+elid).jPlayer({ 
       swfPath: "/themes/foo/js/libs/jPlayer250/Jplayer.swf" 
      });  
     } 

}

{

 $(".audioPlayer").each(function(){ 
      var audioFile = $(this).attr("data-audio-file"); 
      $(this).bind($.jPlayer.event.canplaythrough, function(event) { 
       _loadWatcher(); 
      }); 
      $(this).jPlayer("setMedia", {mp3: audioFile}); 
     }) 

}

Функция _loadWatcher() вызывается некоторыми, но не другие.

Я что-то не так? Или это ошибка с обходным решением? Я пробовал Jplayer Google Group, но по какой-то причине они берут дни и дни на модные вопросы.

Благодаря

+0

Я также страдаю этой проблемой в Chrome. Вы когда-нибудь находили причину и решение проблемы? – Shepless

+0

См. Мой ответ ниже – theade

ответ

2

Моей проблемы заключалась в том, что я связывание события, перед инстанцированием jPlayer на элементе. Я не понимал, что jplayer действительно ждет специального события, а не стандартного события HTML5, поэтому я думал, что привязка в любом месте будет в порядке. Вы живете и учитесь. Поэтому переключение порядка двух последних строк в цикле for фиксировало проблему.