音效可謂是一個小遊戲的靈魂了。
某些玩法離開了音效更是不可能,比如別踩白塊,或者一些以速度爲主的遊戲類型。
麒麟子公司最近有一款鬥地主上微信小遊戲,另外還做了兩款休閒類小遊戲。
當我們覺得差不多大功告成的時候,有用戶反饋說,背景音樂突然就沒了。 要返回大廳再進遊戲場景纔有。
我當時第一反應就是,正在播放的音樂被幹掉了,重新播放又是OK的。
基於這個假設,那就表示這不是Cocos Creator的鍋
經過多方測試,找到了觸發微信小遊戲聲音消失的重現辦法
- 打接電話
- 觸摸iPhoneX底部的那個白色操作條
接下來就是一頓,百度,論壇,微信文檔操作。最後鎖定了一個微信API
wx.onAudioInterruptionEnd
監聽音頻中斷結束事件。在收到 onAudioInterruptionBegin 事件之後,小程序內所有音頻會暫停,收到此事件之後纔可再次播放成功
微信小遊戲官方文檔地址:https://developers.weixin.qq.com/minigame/dev/api/wx.onAudioInterruptionEnd.html
與它配套的還有一個wx.onAudioInterruptionBegin事件,但是我們是要恢復播放,只需要處理這個end事件就好了。
解決辦法:
加上這個解決辦法,是方便急着解決BUG的同學們,忽略之前的分析過程,直接鎖定最終結果 拿走,不謝
wx.onAudioInterruptionEnd(function(){
//強行暫停音樂 如果不暫停,調用resumeMusic是無效的,因爲是微信讓聲音消失了
cc.audioEngine.pauseMusic();
//恢復音樂播放,比如調用 cc.audioEngine.resumeMusic();
//self.refreshBG();
//console.log('refreshBG');
});
注意:必須要先強行調用 cc.audioEngine.pauseMusic,再調用cc.audioEngine.resumeMusic, 因爲這個聲音是微信小遊戲關掉的,Cocos Creator的音樂管理器並不知情。