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

 更新时间:2016年09月17日 10:13:56   作者:一点点白  
这篇文章主要介绍了基于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实现歌词滚动版音乐播放器的代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的。

相关文章

  • 基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)

    基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)

    文字逐行或多行滚动跑马灯插件,基于Jquery。命名为Jquery.RollTitle。支持在一个页面声明多个滚动区 (就为了要这点才写了这个)
    2010-07-07
  • jQuery支持动态参数将函数绑定到事件上的方法

    jQuery支持动态参数将函数绑定到事件上的方法

    这篇文章主要介绍了jQuery支持动态参数将函数绑定到事件上的方法,实例分析了两种支持动态参数的函数绑定技巧,需要的朋友可以参考下
    2015-03-03
  • Jquery中的$.each获取各种返回类型数据的使用方法

    Jquery中的$.each获取各种返回类型数据的使用方法

    each()方法能使DOM循环结构简洁,不容易出错。each()函数封装了十分强大的遍历功能,使用也很方便,它可以遍历一维数组、多维数组、DOM, JSON 等等,在javaScript开发过程中使用$each可以大大的减轻我们的工作量。
    2015-05-05
  • jquery实现户籍地选择下拉框

    jquery实现户籍地选择下拉框

    这篇文章主要为大家详细介绍了jquery实现户籍地选择下拉框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 浅谈Jquery中Ajax异步请求中的async参数的作用

    浅谈Jquery中Ajax异步请求中的async参数的作用

    下面小编就为大家带来一篇浅谈Jquery中Ajax异步请求中的async参数的作用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • jQuery中的deferred使用方法

    jQuery中的deferred使用方法

    deferred对象是jQuery的回调函数解决方案,jQuery之前的版本中异步回调这块做的不是很好,所以后期补上了该解决方案。接下来通过本文给大家介绍jQuery中的derferred使用方法,非常不错,需要的朋友参考下
    2017-03-03
  • 实例解析jQuery中如何取消后续执行内容

    实例解析jQuery中如何取消后续执行内容

    本文主要介绍了jQuery中取消后续执行内容的实例,代码通俗易懂。需要的朋友来看下吧
    2016-12-12
  • jQuery中ready事件用法实例

    jQuery中ready事件用法实例

    这篇文章主要介绍了jQuery中ready事件用法,实例分析了ready事件的功能、定义及文档加载就绪以后触发的具体使用技巧,需要的朋友可以参考下
    2015-01-01
  • jquery数组过滤筛选方法grep()简介

    jquery数组过滤筛选方法grep()简介

    这篇文章主要介绍了jquery数组过滤筛选方法grep()简介,需要的朋友可以参考下
    2014-06-06
  • jQuery+ajax实现文章点赞功能的方法

    jQuery+ajax实现文章点赞功能的方法

    这篇文章主要介绍了jQuery+ajax实现文章点赞功能的方法,涉及jQuery基于ajax无刷新post提交实现点赞功能的具体步骤与相关技巧,需要的朋友可以参考下
    2015-12-12

最新评论