基于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 相关文章推荐
js获取鼠标点击的位置实现思路及代码
May 09 Javascript
JS动画效果打开、关闭层的实现方法
May 09 Javascript
关于js里的this关键字的理解
Aug 17 Javascript
Perl Substr()函数及函数的应用
Dec 16 Javascript
详解JavaScript对象序列化
Jan 19 Javascript
Js 获取当前函数参数对象的实现代码
Jun 20 Javascript
JavaScript实现简单的拖动效果
Jul 02 Javascript
node.js中cluster的使用教程
Jun 09 Javascript
浅谈Node.js爬虫之网页请求模块
Jan 11 Javascript
原生JS实现获取及修改CSS样式的方法
Sep 04 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
Mar 13 Javascript
微信小程序文字显示换行问题
Jul 28 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
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
js 动态选中下拉框
2009/11/26 Javascript
javascript学习笔记(五) Array 数组类型介绍
2012/06/19 Javascript
Web打印解决方案之证件套打的实现思路
2016/08/29 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
Python 的 with 语句详解
2014/06/13 Python
安装dbus-python的简要教程
2015/05/05 Python
Python用 KNN 进行验证码识别的实现方法
2018/02/06 Python
Python模块相关知识点小结
2020/03/09 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
海蓝之谜英国官网:La Mer英国
2020/01/15 全球购物
新东方旗下远程教育网站:新东方在线
2020/03/19 全球购物
在什么时候需要使用"常引用"
2015/12/31 面试题
行政工作个人的自我评价
2014/02/13 职场文书
委托书范本
2014/04/02 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
2014教师年度工作总结
2014/11/10 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
2014年幼儿园保育工作总结
2014/12/02 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书