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.

178 lines
4.6 KiB

// index.js
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,
motto: 'Hello World',
userInfo: {
avatarUrl: defaultAvatarUrl,
nickName: '',
},
hasUserInfo: false,
canIUseGetUserProfile: wx.canIUse('getUserProfile'),
canIUseNicknameComp: wx.canIUse('input.type.nickname'),
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',
}
},
bindViewTap() {
wx.navigateTo({
url: '../logs/logs'
})
},
onChooseAvatar(e) {
const { avatarUrl } = e.detail
const { nickName } = this.data.userInfo
this.setData({
"userInfo.avatarUrl": avatarUrl,
hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl,
})
},
onInputChange(e) {
const nickName = e.detail.value
const { avatarUrl } = this.data.userInfo
this.setData({
"userInfo.nickName": nickName,
hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl,
})
},
getUserProfile(e) {
// 推荐使用wx.getUserProfile获取用户信息开发者每次通过该接口获取用户个人信息均需用户确认开发者妥善保管用户快速填写的头像昵称避免重复弹窗
wx.getUserProfile({
desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
success: (res) => {
console.log(res)
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
}
})
},
changeItem: function (e) {
this.setData({
item: e.target.dataset.item
})
},
changeTab: function (e) {
this.setData({
tab: e.detail.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:'pause'
})
},
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)
}
})