如何实现多实例jplayers

时间:2013-02-09 04:20:58

标签: javascript jquery jplayer

如果之前有人使用过jplayer,我需要帮助解决这个问题。

我有多个jplayers,每个玩家都想播放自己的音频文件。但它并没有这样做,如果我玩一个jplayer,然后所有的jplayers播放,所有播放来自所选jplayers的一个音频文件。事实上,如果我在一个jplayer中使用一个控件,它也可以控制所有其他jplayers。

所以我试图实现一个多实例jplayers,其信息来自于:

http://www.jplayer.org/latest/demo-03/

但是我真的很难实现这个,所以我的问题是有人可以帮我完成这个的实现,以便jplayers工作应该做,而jplayer只控制自己的玩家而不影响其他jplayers ?

以下是我目前的javascript代码(查看源代码):

<script type="text/javascript">   
    $(document).ready(function(){
  $("#jquery_jplayer_1-72-0").jPlayer({
    ready: function () {
      $(this).jPlayer("setMedia", {
        mp3: "AudioFiles/Kalimba.mp3"
      });
    },
    play: function() { // To avoid both jPlayers playing together.
      $(this).jPlayer("pauseOthers");
   },
    solution:"flash,html",
    swfPath: "jquery",
    supplied: "mp3"
  });
}); 
</script>

更新

实际代码:

如果没有音频文件,则为每个音频文件显示空白,显示音频播放器。我也包括了html控件,不确定是否需要,但发布它以防万一

        //start:procedure audio
        $aud_result = '';
        if(empty($arrAudioFile[$key])){
          $aud_result = '&nbsp;';
        }else{

$j = 0;
foreach ($arrAudioFile[$key] as $a) { 

        $info = pathinfo('AudioFiles/'.$a); 
?>

<script type="text/javascript">   
    $(document).ready(function(){

$("#jquery_jplayer_1-<?php echo $key.'-'.$j; ?>").jPlayer({
    ready: function () {
      $(this).jPlayer("setMedia", {
        <?php echo $info['extension'];?>: "<?php echo "AudioFiles/".$a; ?>"
      });
      $(this).bind($.jPlayer.event.play, function() { 
          $(this).jPlayer("pauseOthers");
        });
    },
    solution:"flash,html",
    swfPath: "jquery",
    supplied: "<?php echo $info['extension'];?>"
});
}); 
</script>
  <div id="jquery_jplayer_1-<?php echo $key.'-'.$j; ?>" class="jp-jplayer"></div>
  <div id="jp_container_1" class="jp-audio">
    <div class="jp-type-single">
      <div class="jp-gui jp-interface">
        <ul class="jp-controls">
          <li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>
          <li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
          <li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li>
          <li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li>
          <li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a></li>
          <li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max volume</a></li>
        </ul>
        <div class="jp-progress">
          <div class="jp-seek-bar">
            <div class="jp-play-bar"></div>
          </div>
        </div>
        <div class="jp-volume-bar">
          <div class="jp-volume-bar-value"></div>
        </div>
        <div class="jp-time-holder">
          <div class="jp-current-time"></div>
          <div class="jp-duration"></div>
          <ul class="jp-toggles">
            <li><a href="javascript:;" class="jp-repeat" tabindex="1" title="repeat">repeat</a></li>
            <li><a href="javascript:;" class="jp-repeat-off" tabindex="1" title="repeat off">repeat off</a></li>
          </ul>
        </div>
      </div>
    </div>
  </div>
<?php $j++; 
}

}
//end:procedure audio
?>

2 个答案:

答案 0 :(得分:8)

您可以创建function并传递参数(file and player id),以便在同一页面上创建不同的玩家而不会发生任何冲突:

function js_audioPlayer(file,location) {
    jQuery("#jquery_jplayer_" + location).jPlayer( {
        ready: function () {
          jQuery(this).jPlayer("setMedia", {
        mp3: file
          });
        },
        cssSelectorAncestor: "#jp_interface_" + location,
        swfPath: "/swf"
    });
        return;
}

在这个例子中,文件和位置变量被传递给包装函数,然后构造播放器。

然后根据需要多次运行js_audioPlayer() javascript函数:

js_audioPlayer('file1.mp3',1); //Player 1
js_audioPlayer('file2.mp3',2); //Player 2
js_audioPlayer('file3.mp3',3); //Player 3

使用ID创建播放器DIV:

jquery_jplayer_1 
jquery_jplayer_2
jquery_jplayer_3

和ID为的接口DIV:

jp_interface_1
jp_interface_2
jp_interface_3

希望这有帮助。

有关详细信息http://www.nightbluefruit.com/blog/2011/08/multiple-jplayers-on-the-same-page/

答案 1 :(得分:0)

这是使用jplayer的多个音频播放器实例的代码。 以下代码对我有用。希望这对任何人都有帮助。

$(document).ready(function(){
    /*---Create a jplayer instance on click on the play image---*/

    $(".audio").click(function() {
       $.jPlayer.pause();
       var record_id = this.id;
       var path = 'path for the audio file';
       $("#jquery_jplayer_"+record_id).jPlayer({
            ready: function (event) {
                $(this).jPlayer("setMedia", {
                    title: "Bubble",
                    oga: path,
                });
            },
            cssSelectorAncestor: "#jp_container_"+record_id,
            supplied: "oga",
            wmode: "window",
            errorAlerts: true,
            consoleAlerts: true,
            warningAlerts: true,
            useStateClassSkin: true,
            autoBlur: false,
            smoothPlayBar: true,
            keyEnabled: true,
            remainingDuration: true,
            toggleDuration: true
        });
    });
});