代码如下:
tap_audio_play() {
let that = this;
let audio = that.data.audio;
let show_audio = that.data.show_audio;
if (show_audio == true) {
const innerAudioContext = wx.createInnerAudioContext({
useWebAudioImplement: false // 是否使用 WebAudio 作为底层音频驱动,默认关闭。对于短音频、播放频繁的音频建议开启此选项,开启后将获得更优的性能表现。由于开启此选项后也会带来一定的内存增长,因此对于长音频建议关闭此选项
});
innerAudioContext.src = audio.fileID;
innerAudioContext.play() // 播放
that.setData({
show_audio:false
})
} else if (show_audio == false) {
const innerAudioContext = wx.createInnerAudioContext({
useWebAudioImplement: false
});
innerAudioContext.src = audio.fileID;
innerAudioContext.stop() // 停止
innerAudioContext.destroy() // 释放音频资源
that.setData({
show_audio:true
})
};
},
使用.stop()无法停止 音频的播放,即使加了.destroy()也不会停止播放,而且每点击一次,音频就会增加一次播放,几个音频叠加播放,声音很混乱,也无法停止!
使用两个函数,一个播放音乐,一个停止音乐也不行!
开发者工具和真机都无法停止音乐播放!
请帮忙解决!
微信开发者工具:Stable 1.06.2401020, 调试基础库3.3.4,
不要重复创建wx.createInnerAudioContext 创建好之后存储到data中,stop也要用data中的那个innerAudioContext 才能停止
按照您的指导把问题解决了,非常感谢!
onLoad(options) { let that = this; let audio = wx.getStorageSync('audio'); let mark = wx.getStorageSync('mark'); that.setData({ audio, mark, }); let innerAudioContext = wx.createInnerAudioContext({ useWebAudioImplement: false }); if (mark == "audio") { innerAudioContext.src = audio.fileID; } else if (mark == "video") { innerAudioContext.src = video.fileID; }; that.setData({ innerAudioContext, }); }, tap_audio_play() { let that = this; let show_audio = that.data.show_audio; let innerAudioContext = that.data.innerAudioContext; if (show_audio == true) { innerAudioContext.play() // 播放 that.setData({ show_audio:false, }) } else if (show_audio == false) { innerAudioContext.stop() // 停止 that.setData({ show_audio:true, }) }; },