1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 简单的HTML5音乐播放器带歌词滚动 基于jQuery实现歌词滚动版音乐播放器的代码...

简单的HTML5音乐播放器带歌词滚动 基于jQuery实现歌词滚动版音乐播放器的代码...

时间:2022-10-06 23:16:21

相关推荐

简单的HTML5音乐播放器带歌词滚动 基于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("

" + data[i].text + "")

}

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实现歌词滚动版音乐播放器的代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。