小程序innerAudioContext問題

最近在準(zhǔn)備做一個(gè)錄音倒放小程序的時(shí)候,遇到了點(diǎn)問題,就在這里做一下筆記,踩一下坑。
我這里采用的是基于vue開發(fā)的uniapp的前端框架來開發(fā)小程序。uniapp里面也集成封裝了微信小程序的API接口,只需要把之前的wx.createInnerAudioContext()的wx,替換成uni就可以使用相同的API。
對(duì)比一下差別:詳情可以參考uniapp的官方文檔、小程序的官方文檔

    //uniapp
    methods: {
        clickPlay(){
            const innerAudioContext = uni.createInnerAudioContext();
            innerAudioContext.autoplay = true;
            innerAudioContext.src = 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/audio/music.mp3';
            innerAudioContext.onPlay(() => {
              console.log('開始播放');
            });
            innerAudioContext.onError((res) => {
              console.log(res.errMsg);
              console.log(res.errCode);
            });
        },
    }

    //wx
    methods: {
        clickPlay() {
            const innerAudioContext = wx.createInnerAudioContext();
            innerAudioContext.autoplay = true;
            innerAudioContext.src =
                'http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E061FF02C31F716658E5C81F5594D561F2E88B854E81CAAB7806D5E4F103E55D33C16F3FAC506D1AB172DE8600B37E43FAD&fromtag=46';
            innerAudioContext.onPlay(() => {
                console.log('開始播放');
            });
            innerAudioContext.onError(res => {
                console.log(res.errMsg);
                console.log(res.errCode);
            });
        }
    }

我們使用上面的代碼,每次進(jìn)行點(diǎn)擊事件調(diào)用這個(gè)方法,會(huì)不斷的生成innerAudioContext實(shí)例,就會(huì)導(dǎo)致點(diǎn)一下會(huì)放一次,點(diǎn)兩下會(huì)疊在一起,點(diǎn)個(gè)十幾下估計(jì)會(huì)成為混沌的噪音。解決的方法就是把生成實(shí)例放在export default上面。

const innerAudioContext = uni.createInnerAudioContext();
export default {
    data() {
        return {};
    },
    onLoad() {},
    mounted() {},
    methods: {
        clickPlay() {           
            innerAudioContext.autoplay = true;
            innerAudioContext.src =
                'https://img-cdn-qiniu.dcloud.net.cn/uniapp/audio/music.mp3';
            innerAudioContext.onPlay(() => {
                console.log('開始播放');
            });
            innerAudioContext.onError(res => {
                console.log(res.errMsg);
                console.log(res.errCode);
            });
        }
    }
};

后續(xù)問題接著更新

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容