createInnerAudioContext() 页面卸载后回调事件依然存在

发布于 6 年前作者 zmo15842 次浏览最后编辑 6 年前来自 ask

iPhone 6

iOS 11.1.2

问题是这样的。由于产品整个只允许一个音频播放,跳转至其他页面时,也可以判断播放状态。

所以我在app.js中定义了一个全局对象。

const innerAudioContext = wx.createInnerAudioContext()//音频播放;

在A页面onLoad中 注册了一遍 预防更换音频src多次触发回调。 这是正常的。

//播放回调

innerAudioContext.onPlay(() => {

console.log(‘开始播放’)

})

但是我跳转入B页面中,由于要识别回调状态来改变Page数据。所以在B页面onLoad中也写入了

innerAudioContext.onPlay(() => {

console.log(‘开始播放’)

})

结果在我返回A页面播放音乐时,

B页面明明是卸载的。但是却也触发了回调。

WXOPEN Club 内容图片

如何让B页面回调事件卸载后不执行?不能销毁实例,因为是全局对象。。

10 回复
dpeng
dpeng1 楼6 年前

可以在 B 页面的 onUnload 事件中调用 InnerAudioContext.offPlay 取消监听,但需要注意版本兼容。1.8.0 以上版本可用。

qiang76
qiang762 楼6 年前

@Link 那请问下。offPlay可以取消监听播放回调。那

onWaiting缓冲这个写法难道是Waiting?

jing84
jing843 楼6 年前

可以先看看小游戏的文档 https://mp.weixin.qq.com/debug/wxagame/dev/document/media/audio/InnerAudioContext.html?t=201832 ,内容一样的。小程序的开发文档我们补一下。

weidong
weidong4 楼6 年前

大哥 录音的也会有这个问题。有录音的销毁监听事件嘛

molei
molei5 楼6 年前

为何官方文档没写。。

fma
fma6 楼6 年前

此刻我真的想配上一首歌。终于等到你,还好我没放弃

liren
liren7 楼6 年前
WXOPEN Club 内容图片

A页面进入B页面 。B页面进行错误的录音操作。报了一次Error。

B页面返回A页面。(B页面已经卸载了),再次进入B页面进行错误录音操作。 就报了多次Error。

有办法在B页面销毁的时候,销毁录音实例吗?

yan94
yan948 楼6 年前

自己顶顶。。坐等官方大哥回答

aduan
aduan9 楼6 年前

呀。解决了我的燃眉之急。

limin
limin10 楼5 年前

自己顶顶。。坐等官方大哥回答