使用
用方法封装,也可以不封装
/**
* 操控音频播放
* @params: Audios: 音频地址列表
* */
handleAudio(Audios){
AppMusic.destroy() //销毁上次的实例(必须有)AppMusic是全局实例
AppMusic = wx.createInnerAudioContext() //创建实例(记住一定放这里,因为每次新播放音频都要新建实例,否则会播放上次和本次的音频)
AppMusic.src = Audios[0] // 播放地址
AppMusic.autoplay = true // 自动播放,默认位false
AppMusic.onPlay(() => { // 监听播放开始
console.log('开始播放')
})
AppMusic.onError((res) => { //监听播放报错
console.log(res.errMsg)
console.log(res.errCode)
// AppMusic.destroy()
})
AppMusic.onPause( () =>{ //监听播放暂停
console.log('暂停播放')
}
)
let jishu = Audios.length //获取地址列表长度,方便下面的循环播放
let soundsIndex = 0 //音频索引
let offEnded = AppMusic.onEnded( (res) =>{ //使用类似递归的方法循环,播放上一首结束,继续下一首
console.log(AppMusic.src)
jishu --
if(jishu > 0){
soundsIndex ++
AppMusic.src = Audios[soundsIndex]
}
})
},
踩坑:
如果在调用方法前不使用AppMusic.destroy() 就会出现同一个音频多次被监测和播放: