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
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&¤tTime!==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)
|
|
}
|
|
|
|
})
|
|
|