收藏
回答

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

问题模块 框架类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
API和组件 小程序 createInnerAudioContext 客户端 6.6.3 1.9.91


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页面明明是卸载的。但是却也触发了回调。


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

最后一次编辑于  2018-03-03
回答关注问题邀请回答
收藏

11 个回答

  • 小程序/小游戏开发-Link
    小程序/小游戏开发-Link
    2018-03-05

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

    2018-03-05
    赞同
    回复
  • 小程序/小游戏开发-Link
    小程序/小游戏开发-Link
    2018-03-04

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

    2018-03-04
    赞同
    回复
  • Daniel.
    Daniel.
    2018-03-09

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

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

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

    2018-03-09
    赞同
    回复
  • Daniel.
    Daniel.
    2018-03-09

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

    2018-03-09
    赞同
    回复
  • Daniel.
    Daniel.
    2018-03-05

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

    2018-03-05
    赞同
    回复
  • Daniel.
    Daniel.
    2018-03-05

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

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

    2018-03-05
    赞同
    回复
  • Daniel.
    Daniel.
    2018-03-05

    为何官方文档没写。。

    2018-03-05
    赞同
    回复
  • Daniel.
    Daniel.
    2018-03-05

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

    2018-03-05
    赞同
    回复
  • Daniel.
    Daniel.
    2018-03-03

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

    2018-03-03
    赞同
    回复
  • Daniel.
    Daniel.
    2018-03-03

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

    2018-03-03
    赞同
    回复

正在加载...