上一篇插件搭建的顺序最后一步的页面初始化函数中,就是最重要的一步,就先从这个函数说起吧。
$("#jquery_jplayer_1").jPlayer({
ready: function () {
$(this).jPlayer("setMedia", {
title: "Bubble",
mp3: "@Scripts.Url("~/content/test.mp3")"
//mp3:"D:\Documents\Music\test.mp3"
});
},
swfPath: "/Scripts/JPlayer",
supplied: "mp3"
});
第一行代码$("#jquery_jplayer_1").jPlayer()这个方法,将jquery_jplayer_1这个div初始化成播放器,然后括号里的ready、swfPath、Supplied都是这个播放器的参数,即Json格式的options,一个个来解释
swfPath:当浏览器不支持Html5时,使用Flash来显示播放器,这个参数就是指的源文件中jplayer.swf的路径,也可以这样写:swfPath:"/Scripts/Jplayer/jplayer.swf"
supplied:当前播放器支持的格式
最后,当这些参数设置好了以后,就该调用ready函数了,里面的$(this)还是指刚刚那个播放器,$(this).jPlayer("setMedia")设定要播放的文件,方法里面的同样是json格式的参数,如title:标题,MP3:"文件路径"。
然后我的项目里需要用到动态来播放,也就是点击不同按钮播放不同的文件,可以像下面这么使用:
比如一个button按钮的click事件中可以加入下列代码:
$("#jquery_jplayer_1")
.jPlayer("stop")
.jPlayer("setMedia", {wav:"@Url.Action("GetRecordAudio")/?path='sdf'" }) .jPlayer("play");
文件的url我做了一下处理,因为要访问项目外其他的文件,所以在后台action中返回了一个FileStreamResult的类型,顺便贴出来:
//返回服务器文件
public FileStreamResult GetRecordAudio(string path)
{
FileStream file = new FileStream(@"D:\Documents\Music\test.wav",FileMode.Open);
return File(file, "application/octet-stream");
}
path可以自己处理,这样我就完成了一个动态播放音乐的功能。
附上jplayer官方API地址:http://www.jplayer.org/latest/developer-guide/
在网上看到有朋友说播放器无法隐藏,在官网上找到了解决办法(好像使用html5的时候才支持隐藏):
<head>
<style>
#jquery_jplayer {
display:none; /* 当使用flash显示的时候无效 */
}
</style>
<script type="text/javascript">
$("#jquery_jplayer").hide(); /*当使用flash显示的时候无效 */
</script>
</head> <body>
<div id="jquery_jplayer"></div>
</body>