You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

145 lines
3.2 KiB

const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
function formatTime(time){
var minute=Math.floor(time/60)%60;
var second=Math.floor(time)%60
return(minute<10?'0'+minute:minute)+':'+(second<10?'0'+second:second)
}
Page({
data:{
item:0,
tab:0,
playlist:[{
id:1,
title:'祝你生日快乐',
singer:'小丽',
src:'http://127.0.0.1:3000/1.mp3',
coverImgUrl:'/images/cover.jpg'
},{
id:2,
title:'劳动最光荣',
singer:'小朋',
src:'http://127.0.0.1:3000/2.mp3',
coverImgUrl:'/images/cover.jpg'
},{
id:3,
title:'龙的传人',
singer:'小华',
src:'http://127.0.0.1:3000/3.mp3',
coverImgUrl:'/images/cover.jpg'
},{
id:4,
title:'小星星',
singer:'小红',
src:'http://127.0.0.1:3000/4.mp3',
coverImgUrl:'/images/cover.jpg'
}],
state:'running',
playIndex:0,
play:{
currentTime:'00:00',
duration:'00:00',
percent:0,
title:'',
singer:'',
coverImgUrl:'/images/cover.jpg',
}
},
changeItem:function(e){
this.setData({
item:e.target.dataset.item
})
},
changeTab:function(e){
this.setData({
tab:e.datail.current
})
},
audioBam:null,
onReady: function () {
this.audioBam=wx.getBackgroundAudioManager()
this.setMusic(0)
this.audioBam.onError(()=>{
console.log('播放失败:'+this.audioBam.src)
})
this.audioBam.onEnded(()=>{
this.next()
})
var updateTime=0
this.audioBam.onTimeUpdate(()=>{
var currentTime=parseInt(this.audioBam.currentTime)
if(!this.sliderChangeLock&&currentTime!==updateTime){
updateTime=currentTime
this.setData({
'play.duration':formatTime(this.audioBam.duration||0),
'play.currentTime':formatTime(currentTime),
'play.percent':currentTime/this.audioBam.duration*100
})
}
})
},
setMusic:function(index){
var music=this.data.playlist[index]
this.audioBam.src=music.src
this.audioBam.title=music.title
this.setData({
playIndex:index,
'play.title':music.title,
'play.singer':music.singer,
'play.coverImgUrl':music.coverImgUrl,
'play.currentTime':'00:00',
'play.duration':'00:00',
'play.percent':0,
state:'running'
})
},
play:function(){
this.audioBam.play()
this.setData({
state:'running'
})
},
pause:function(){
this.audioBam.pause()
this.setData({
state:'paused'
})
},
next:function(){
var index=this.data.playIndex >= this.data.playlist.length - 1 ? 0 : this.data.playIndex + 1
this.setMusic(index)
},
sliderChangeLock:false,
sliderChanging:function(e){
var second=e.detail.value*this.audioBam.duration/100
this.sliderChangeLock=true
this.setData({
'play.currentTime':formatTime(second),
})
},
sliderChange:function(e){
var second=e.detail.value*this.audioBam.duration/100
this.audioBam.seek(second)
setTimeout(()=>{
this.sliderChangeLock=false
},1000)
},
change:function(e){
this.setMusic(e.currentTarget.dataset.index)
}
})