以何为家
以何为家
  • 发布:2020-09-04 11:41
  • 更新:2021-09-02 11:58
  • 阅读:3600

全局音频 uni.createInnerAudioContext() 相关监听、控制 问题

分类:uni-app

1、uni.createInnerAudioContext()创建的音频管理,挂载到main.js上作为一个全局变量,因为我想在很多页面控制它的播放、暂停和关闭。

//创建全局的音频管理  
Vue.prototype.innerAudioContext = uni.createInnerAudioContext()  
//如有新建,设置全局的音频  
Vue.prototype.setAudio = function(audio){  
    Vue.prototype.innerAudioContext = audio  
}

然后在每个页面还要监听它的播放时间、播放状况等显示出来。我在要显示的多个页面都写了监听时间,并且关闭音频或者页面结束的时候,都取消了监听。但是页面切换多次,音频暂停播放多次都感觉监听就混乱了,经常出现监听多次的情况,比如按下暂停,停止监听执行多次,其他关闭的页面也打印出了监听方式。

【请教一个全局音频监听、控制的 思路和方法】本来想整个播放时显示的小窗口在页面上,然后每个页面都可以显示,结果不会,就在多个页面上单独写了个可拖拽移动的view,通过全局变量来控制显示的时间和播放状态等。

//一些监听方法:  
this.innerAudioContext.onTimeUpdate(() => {  
。。。  
this.innerAudioContext.onPause(() => {  
。。。  

//取消监听方法:  
this.innerAudioContext.offTimeUpdate(function(){  
。。。  
this.innerAudioContext.offStop(function(){  
。。。。  
2020-09-04 11:41 负责人:无 分享
已邀请:
长方体移动师

长方体移动师 - 一个奇葩的程序员

例如:一个 innerAudioContext 对象多次绑定 onEnded 事件。

  1. 全局音频 uni.createInnerAudioContext()
  2. 在 App.vue 的 onLaunch 中绑定 onEnded 事件,并且执行 callback 函数。
  3. 在 App.vue 的 globalData 中 声明一个属性,作为 onEnded 事件中的 callback。
  4. 在你需要的 子组件中,对 globalData.callback 进行重写,赋值新的函数

该问题目前已经被锁定, 无法添加新回复