在火狐中可以间歇性地播放



我正在尝试为游戏预加载音频文件。我正在使用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 循环中最后两行的顺序解决了这个问题。

最新更新