我剛開始用wx.createInnerAudioContext(),是將此方法寫在了我的播放語音函數裏,發現怎麼暫停和取消都不好使
經過踩坑,得出結論!!!
1.將此方法聲明在onLoad中,(如果聲明在page外部,每次進此頁面執行語言操作都會多次執行。)
2.將api方法也都聲明在onLoad中(不需要一直去創建回調事件)
3.播放語言操作
/**
* 播放音頻
*/
playAudio(e) {
const _this = this;
wx.stopVoice()
showToast('text', '播放中', {
duration: 120 * 1000,
mask: true
})
let audio = e.currentTarget.dataset.audio;
let audioSave = _this.data.audioSave;
console.log('audio:',audio.name,' audioSave:',audioSave)
if (audio.ext === 'mp3') { // 小程序發送的
this.data.audioContext.src = audio.url
} else {
this.data.audioContext.src = audio.mp3Url
}
if (audio.name == audioSave) {
console.log('播放同一個語音,將其暫停')
this.data.audioContext.pause();
//初始化
this.setData({
audioSave: ''
})
} else{
//不是同一個語音 直接播放其它,將此次語音記錄
this.data.audioContext.play()
this.setData({
audioSave: audio.name
})
}
},