小程序InnerAudioContext不报错、 不播放BUG

全局生成了一个createInnerAudioContext实例,每次赋值src然后play()播放没声音也没报错

项目场景

我当前是uni-app+vue3开发环境 我全局生成的this.audioContext = wx.createInnerAudioContext对象 audioContext是放在了data内

问题描述

我持有全局对象进行play时无法播放,没有声音没有报错注册的监听也没有调用

playAudio() {
			if (this.audioFilePath) {
				this.audioContext = wx.createInnerAudioContext();
				this.audioContext.src = this.audioFilePath;
				this.audioContext.play();
				this.audioContext.onError((err) => {
					console.error('音频播放错误:', err);
				});
				this.audioContext.onEnded(() => {
					console.log('音频播放结束');
				});
			} else {
				console.error('音频文件路径未创建');
			}
		}

---

# 原因分析:
找了很久没找到什么问题,最后通过打印输出	this.audioContext 对象和局部持有的wx.createInnerAudioContext();对象发现我全局的对象被vue处理了一下成为了响应式的对象这个时候调用播放什么是无效的,具体我还不太知道响应式之后应该怎么调用原始的方法让他生效

---

# 解决方案:
目前我知道我持有的对象被vue修改了一层成为全局响应对象,这个时候我的解决方法是不让this.audioContext成为响应对象vue提供了方法markRaw ,	const audioContext1 = wx.createInnerAudioContext();
this.audioContext = markRaw(audioContext1); // 全局对象 这样全局对象就可以正常处理暂停播放销毁



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值