diff --git a/components/tabBar/tabBar.vue b/components/tabBar/tabBar.vue index 488cba0..1b21399 100644 --- a/components/tabBar/tabBar.vue +++ b/components/tabBar/tabBar.vue @@ -52,7 +52,7 @@ import { getToken } from '@/utils/auth' - const innerAudioContext = uni.createInnerAudioContext(); + let innerAudioContext =''; // #ifdef APP || H5 const jyJPush = uni.requireNativePlugin('JY-JPush'); // #endif @@ -60,6 +60,8 @@ data() { return { msgSocket: this.$msgSocket, + // 是否正在播放 + ifPlay:false, aindex: 1, msgNum: null, identity: 'user', @@ -124,39 +126,57 @@ methods: { dianyidain() { -console.log('执行了,dianyidain'); - // #ifdef APP-PLUS - innerAudioContext.src = '../../static/msgV.mp3'; - // #endif - // #ifndef APP-PLUS - innerAudioContext.src = 'https://www.nuoyunr.com/lananRsc/rescue/msgV.mp3'; - // #endif - // 设置播放次数和计数器 - const playCount = 5; - let currentCount = 0; - - // 监听音频播放结束事件 - innerAudioContext.onEnded(() => { - // 播放计数加一 - currentCount++; - - // 判断是否达到播放次数上限 - if (currentCount < playCount) { - // 继续播放 - innerAudioContext.play(); - } else { - // 播放完成,可以在这里添加额外的逻辑 - console.log('播放完成'); - //及时释放资源 + if(!this.ifPlay){ + console.log('执行了,dianyidain'); + if(innerAudioContext!=""){ + try { + console.log('调用前先销毁'); + innerAudioContext.stop(); + innerAudioContext.destroy(); + innerAudioContext=""; + }catch (e){ + console.log('销毁出错'); + } + } + innerAudioContext = uni.createInnerAudioContext(); + this.ifPlay=true + // #ifdef APP-PLUS + innerAudioContext.src = '../../static/msgV.mp3'; + // #endif + // #ifndef APP-PLUS + innerAudioContext.src = 'https://www.nuoyunr.com/lananRsc/rescue/msgV.mp3'; + // #endif + // 设置播放次数和计数器 + const playCount = 5; + let currentCount = 0; + // 初次播放 + innerAudioContext.play(); + innerAudioContext.onError((err) => { + console.error('播放错误', err); + this.ifPlay=false innerAudioContext.stop(); - innerAudioContext.destroy(); - } - }); - - // 初次播放 - innerAudioContext.play(); - - + innerAudioContext.destroy(); // 播放错误后释放实例 + }); + // 监听音频播放结束事件 + innerAudioContext.onEnded(() => { + // 播放计数加一 + currentCount++; + // 判断是否达到播放次数上限 + if (currentCount < playCount) { + // 继续播放 + innerAudioContext.play(); + } else { + // 播放完成,可以在这里添加额外的逻辑 + console.log('播放完成'); + this.ifPlay=false + //及时释放资源 + innerAudioContext.stop(); + innerAudioContext.destroy(); + } + }); + }else{ + console.log('正在播放音频,拒绝播放请求'); + } }, msgInfo() { console.log(this.msgSocket, 'msgSocket') @@ -165,7 +185,7 @@ console.log('执行了,dianyidain'); this.msgSocket.onMessage(res => { console.log("发出提示音", res); this.getbottom(); - // this.dianyidain() + this.dianyidain() }) }