我正在尝试为游戏预加载音频文件。我正在使用Jplayer。我有一个覆盖层,一旦预加载了所有音频,它就会被删除。在 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组,但由于某种原因,他们花了几天的时间来处理问题。
谢谢
我的问题是我在元素上实例化 jPlayer 之前绑定了事件。我没有意识到 jplayer 实际上正在等待自定义事件 - 而不是标准的 HTML5 事件 - 所以我认为在任何地方绑定都是可以的。你生活和学习。因此,切换 for 循环中最后两行的顺序解决了这个问题。