基于jQuery实现歌词滚动版音乐播放器的代码


Posted in Javascript onSeptember 17, 2016

先给大家看下效果图,感兴趣的朋友可以参考实现代码

基于jQuery实现歌词滚动版音乐播放器的代码

核心代码如下所示:

$.ajax({
url: "/music/music.txt",
type: "get",
success: function(data) {
data = jQuery.parseJSON(data);
var length = data.length;
var now=0;
for (i = 0; i < length; i++) {
$("#musicText li").eq(i).after("<li>" + data[i].text + "</li>")
}
var player = {
playButton: $(".play"),
songText: $(".musicText"),
state: 0,
//0播放,1暂停
audio: $("#audio").get(0),
bind: function() {
//绑定按钮
//播放或暂停
console.log($.type(this))
console.log($.type(this))
var obj = this;
this.playButton.click(function() {
obj.changeState(obj.state ? 0 : 1);
});
//设置声音
$("#voice").click(function(ex) {
var percent = (ex.clientX - $(this).offset().left) / $(this).width();
obj.setVoice(percent);
});
//默认声音 0.8 
obj.setVoice(1.0);
//静音
$("#voiceOP").click(function() {
if (obj.muted) {
$(this).removeClass("muted");
obj.audio.muted = false;
obj.muted = false;
} else {
$(this).addClass("muted");
obj.audio.muted = true;
obj.muted = true;
}
});
//设置进度
$("#MusicProgress").click(function(ex) {
var percent = (ex.clientX - $(this).offset().left) / $(this).width();
obj.setProgress(percent, false);
});
//上一首
$("#prev").click(function() {
obj.nowIndex--;
if (obj.nowIndex < 0) obj.nowIndex = obj.list.length - 1;
obj.playSing(obj.nowIndex);
});
//下一首
$("#next").click(function() {
obj.nowIndex++;
if (obj.nowIndex >= obj.list.length) obj.nowIndex = 0;
obj.playSing(obj.nowIndex);
player.audio.play();
});
//绑定事件 - 播放时间改变
this.audio.ontimeupdate = function() {
obj.timeChange();
}
//播放结束
this.audio.onended = function() {
obj.singEnd();
}
},
//切换播放状态
changeState: function(_state) {
this.state = _state;
if (!this.state) {
this.playButton.removeClass("pause").addClass("play");
this.pause();
} else {
this.playButton.removeClass("play").addClass("pause");
this.play();
}
},
//播放
play: function() {
this.audio.play();
},
//暂停
pause: function() {
this.audio.pause();
},
timeChange: function() {
var nowSec = Math.floor(this.audio.currentTime);
console.log(nowSec)
console.log(data[now].time)
if(nowSec>data[now].time){
now = now + 1;
console.log(now)
$("#musicText li").eq(now).addClass("active").siblings("li").removeClass("active");
$("#musicText").css("top",-(24*now)+138)
}
var totalSec = Math.floor(this.audio.duration);
//当前进度显示
var secTip = secFormat(nowSec) + "/" + secFormat(totalSec);
if (secTip.length == 11) $("#secTip").html(secTip);
this.setProgress(nowSec / totalSec, true);
},
setVoice: function(percent) {
$("#voice").children(".bar").css("width", percent * 100 + "%");
$("#voice").children("a").css("left", percent * 100 + "%");
this.audio.volume = percent;
},
setProgress: function(percent, justCss) {
$("#MusicProgress").children(".bar").css("width", percent * 100 + "%");
$("#MusicProgress").children("a").css("left", percent * 100 + "%");
if (!justCss) this.audio.currentTime = this.audio.duration * percent;
},
singEnd: function() {
if (this.style == 0) {
this.nowIndex++;
if (this.nowIndex >= this.list.length) this.nowIndex = 0;
this.playSing(this.nowIndex);
} else {
var index = Math.floor(Math.random() * (this.list.length + 1)) - 1;
index = index < 0 ? 0 : index;
index = index >= this.list.length ? (this.list.length - 1) : index;
this.playSing(index);
this.nowIndex = index;
}
},
};
player.bind();
function secFormat(num) {
var m = Math.floor(num / 60);
var s = Math.floor(num % 60);
return makeFormat(m) + ":" + makeFormat(s);
function makeFormat(n) {
if (n >= 10) return n;
else {
return "0" + n;
}
}
}
}
})

然后这里的代码是alpha0.0.1版的,一直在升级ing.

以上所述是小编给大家介绍的基于jQuery实现歌词滚动版音乐播放器的代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的。

Javascript 相关文章推荐
javascript import css实例代码
Jul 18 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
Oct 30 Javascript
JavaScript使用addEventListener添加事件监听用法实例
Jun 01 Javascript
js图片翻书效果代码分享
Aug 20 Javascript
js实现向右横向滑出的二级菜单效果
Aug 27 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
Nov 24 Javascript
前端js弹出框组件使用方法
Aug 24 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
Jul 17 Javascript
javascript匿名函数中的'return function()'作用
Oct 15 Javascript
微信小程序数据统计和错误统计的实现方法
Jun 26 Javascript
vue.js中ref和$refs的使用及示例讲解
Aug 14 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
Nov 12 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
Sep 17 #Javascript
最全面的JS倒计时代码
Sep 17 #Javascript
jQuery检查元素存在性(推荐)
Sep 17 #Javascript
用jquery获取自定义的标签属性的值简单实例
Sep 17 #Javascript
Js获取当前日期时间及格式化代码
Sep 17 #Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
Sep 17 #Javascript
jquery遍历标签中自定义的属性方法
Sep 17 #Javascript
You might like
PHP+MYSQL开发工具及资源收藏
2007/01/02 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
jquery HotKeys轻松搞定键盘事件代码
2008/08/30 Javascript
轻量级 JS ToolTip提示效果
2010/07/20 Javascript
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
常用的js方法合集
2017/03/10 Javascript
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
Python编写百度贴吧的简单爬虫
2015/04/02 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
使用Python第三方库pygame写个贪吃蛇小游戏
2020/03/06 Python
如何表示python中的相对路径
2020/07/08 Python
python3 kubernetes api的使用示例
2021/01/12 Python
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
群众路线个人整改方案
2014/10/25 职场文书
继续教育个人总结
2015/03/03 职场文书
家长反馈意见及建议
2015/06/03 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
Python开发五子棋小游戏
2022/04/28 Python
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript