|
|
|
|
// index.js
|
|
|
|
|
// 获取应用实例
|
|
|
|
|
const app = getApp()
|
|
|
|
|
|
|
|
|
|
Page({
|
|
|
|
|
data: {
|
|
|
|
|
item:0,
|
|
|
|
|
tab:0,
|
|
|
|
|
state:'paused',
|
|
|
|
|
playIndex:0,
|
|
|
|
|
play:{
|
|
|
|
|
currenTime:'00:00',
|
|
|
|
|
duration:'00:00',
|
|
|
|
|
percent:0,
|
|
|
|
|
title:'',
|
|
|
|
|
singer:'',
|
|
|
|
|
coverImgUrl:'/image/cover.jpg',
|
|
|
|
|
},
|
|
|
|
|
playlist:[{
|
|
|
|
|
id:1,title:'钢琴协奏曲',singer:'肖邦',
|
|
|
|
|
src:'http://localhost:3000/1.mp3',coverImgUrl:'/image/cover.jpg'
|
|
|
|
|
},{
|
|
|
|
|
id:2,title:'奏鸣曲',singer:'莫扎特',
|
|
|
|
|
src:'http://localhost:3000/1.mp3',coverImgUrl:'/image/cover.jpg'
|
|
|
|
|
},{
|
|
|
|
|
id:3,title:'欢乐颂',singer:'贝多芬',
|
|
|
|
|
src:'http://localhost:3000/2.mp3',coverImgUrl:'/image/cover.jpg'
|
|
|
|
|
},{
|
|
|
|
|
id:4,title:'爱之梦',singer:'李斯特',
|
|
|
|
|
src:'h',coverImgUrl:'/image/cover.jpg'
|
|
|
|
|
}]
|
|
|
|
|
},
|
|
|
|
|
changeItem:function(e){
|
|
|
|
|
this.setData({
|
|
|
|
|
item:e.target.dataset.item
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
changeTab:function(e){
|
|
|
|
|
this.setData({
|
|
|
|
|
tab:e.detail.current
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
// 事件处理函数
|
|
|
|
|
bindViewTap() {
|
|
|
|
|
wx.navigateTo({
|
|
|
|
|
url: '../logs/logs'
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
audioCtx:null,
|
|
|
|
|
onReady:function() {
|
|
|
|
|
this.audioCtx=wx.createInnerAudioContext()
|
|
|
|
|
var that=this
|
|
|
|
|
this.audioCtx.onError(function(){
|
|
|
|
|
console.log('播放失败:'+that.audioCtx.src)
|
|
|
|
|
})
|
|
|
|
|
this.audioCtx.onEnded(function(){
|
|
|
|
|
that.next()
|
|
|
|
|
})
|
|
|
|
|
this.audioCtx.onPlay(function(){})
|
|
|
|
|
this.audioCtx.onTimeUpdate(function(){
|
|
|
|
|
that.setData({
|
|
|
|
|
'play.duration':formatTime(that.audioCtx.duration),
|
|
|
|
|
'play.currentTime':formatTime(that.audioCtx.currentTime),
|
|
|
|
|
'play.percent':that.audioCtx.currentTime /
|
|
|
|
|
that.audioCtx.duration*100
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
this.setMusic(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)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
sliderChange:function(e){
|
|
|
|
|
var second=e.detail.value*this.audioCtx.duration/100
|
|
|
|
|
this.audioCtx.seek(second)
|
|
|
|
|
},
|
|
|
|
|
setMusic:function(index){
|
|
|
|
|
var music=this.data.playlist[index]
|
|
|
|
|
this.audioCtx.src=music.src
|
|
|
|
|
this.setData({
|
|
|
|
|
playIndex:index,
|
|
|
|
|
'play.title':music.title,
|
|
|
|
|
'play.singer':music.singer,
|
|
|
|
|
'play.coverImgUrl':music.coverImgUrl,
|
|
|
|
|
'play.currentTime':'00:00',
|
|
|
|
|
'play.duration':0
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
onLoad() {
|
|
|
|
|
if (wx.getUserProfile) {
|
|
|
|
|
this.setData({
|
|
|
|
|
canIUseGetUserProfile: true
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
getUserProfile(e) {
|
|
|
|
|
// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
|
|
|
|
|
wx.getUserProfile({
|
|
|
|
|
desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
|
|
|
|
|
success: (res) => {
|
|
|
|
|
console.log(res)
|
|
|
|
|
this.setData({
|
|
|
|
|
userInfo: res.userInfo,
|
|
|
|
|
hasUserInfo: true
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
play:function(){
|
|
|
|
|
this.audioCtx.play()
|
|
|
|
|
this.setData({state:'running'})
|
|
|
|
|
},
|
|
|
|
|
pause:function(){
|
|
|
|
|
this.audioCtx.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)
|
|
|
|
|
if (this.data.state==='running'){
|
|
|
|
|
this.play()
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
change:function(e){
|
|
|
|
|
this.setMusic(e.currentTarget.dataset.index)
|
|
|
|
|
this.play()
|
|
|
|
|
},
|
|
|
|
|
getUserInfo(e) {
|
|
|
|
|
// 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息
|
|
|
|
|
console.log(e)
|
|
|
|
|
this.setData({
|
|
|
|
|
userInfo: e.detail.userInfo,
|
|
|
|
|
hasUserInfo: true
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|