微信小程序音乐播放器js代码
时间: 2023-10-04 13:10:22 浏览: 196
以下是一个简单的微信小程序音乐播放器的 js 代码示例:
```
// 获取全局唯一的背景音频管理器
const backgroundAudioManager = wx.getBackgroundAudioManager()
Page({
data: {
// 歌曲名
songName: '未知歌曲',
// 歌手名
singerName: '未知歌手',
// 专辑封面
albumCover: '',
// 歌曲总时长
duration: '00:00',
// 当前播放时间
currentTime: '00:00',
// 播放状态(0:未播放,1:正在播放,2:暂停)
playStatus: 0,
// 歌曲列表
songList: [{
id: 1,
songName: '歌曲1',
singerName: '歌手1',
albumCover: 'https://xxx/xxx/xxx.jpg',
musicUrl: 'https://xxx/xxx/xxx.mp3'
}, {
id: 2,
songName: '歌曲2',
singerName: '歌手2',
albumCover: 'https://xxx/xxx/xxx.jpg',
musicUrl: 'https://xxx/xxx/xxx.mp3'
}]
},
// 播放/暂停
playOrPause: function() {
if (this.data.playStatus === 0) {
// 如果未播放,则开始播放第一首歌曲
this.playSong(0)
} else if (this.data.playStatus === 1) {
// 如果正在播放,则暂停
backgroundAudioManager.pause()
this.setData({
playStatus: 2
})
} else if (this.data.playStatus === 2) {
// 如果已暂停,则继续播放
backgroundAudioManager.play()
this.setData({
playStatus: 1
})
}
},
// 播放指定歌曲
playSong: function(index) {
const song = this.data.songList[index]
// 设置背景音频数据
backgroundAudioManager.title = song.songName
backgroundAudioManager.singer = song.singerName
backgroundAudioManager.coverImgUrl = song.albumCover
backgroundAudioManager.src = song.musicUrl
// 监听背景音频播放事件
backgroundAudioManager.onPlay(() => {
console.log('onPlay')
this.setData({
playStatus: 1
})
})
// 监听背景音频暂停事件
backgroundAudioManager.onPause(() => {
console.log('onPause')
this.setData({
playStatus: 2
})
})
// 监听背景音频停止事件
backgroundAudioManager.onStop(() => {
console.log('onStop')
this.setData({
playStatus: 0,
currentTime: '00:00'
})
})
// 监听背景音频播放进度更新事件
backgroundAudioManager.onTimeUpdate(() => {
console.log('onTimeUpdate')
const duration = backgroundAudioManager.duration
const currentTime = backgroundAudioManager.currentTime
this.setData({
duration: this.formatTime(duration),
currentTime: this.formatTime(currentTime)
})
})
// 监听背景音频自然播放结束事件
backgroundAudioManager.onEnded(() => {
console.log('onEnded')
const nextIndex = index + 1
if (nextIndex < this.data.songList.length) {
// 如果还有下一首歌曲,则播放下一首
this.playSong(nextIndex)
} else {
// 如果已经播放完所有歌曲,则停止播放
backgroundAudioManager.stop()
this.setData({
playStatus: 0,
currentTime: '00:00'
})
}
})
},
// 格式化时间
formatTime: function(time) {
const minutes = Math.floor(time / 60)
const seconds = Math.floor(time % 60)
return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`
}
})
```
在上面的代码中,我们定义了一个 `backgroundAudioManager` 对象,用于管理背景音频的播放、暂停、停止等操作。同时,我们还定义了一个 `Page` 对象,用于管理页面的数据和事件处理。在 `Page` 对象的 `data` 属性中,我们定义了一些与播放器相关的数据,包括歌曲名、歌手名、专辑封面、歌曲总时长、当前播放时间、播放状态和歌曲列表。在 `Page` 对象的方法中,我们定义了一些与播放器相关的事件处理函数,包括播放/暂停、播放指定歌曲、格式化时间等。在 `playOrPause` 方法中,我们根据播放状态执行不同的操作,如果未播放,则开始播放第一首歌曲;如果正在播放,则暂停;如果已暂停,则继续播放。在 `playSong` 方法中,我们设置了背景音频数据,并监听了背景音频的播放、暂停、停止、进度更新和自然播放结束等事件。在 `formatTime` 方法中,我们将时间格式化为 `mm:ss` 的形式。
阅读全文