微信小遊戲開發(10)-音訊播放

陳田田發表於2018-09-01

小遊戲內只有一種音訊播放的方式,即使用InnerAudioContext來播放。

使用InnerAudioContext播放

通過wx.createInnerAudioContext()介面可以建立一個音訊例項innerAudioContext,通過這個例項可以播放音訊。

var audio = wx.createInnerAudioContext();
audio.src = 'audio/bgm.mp3';
audio.play();
複製程式碼

在IOS系統上,預設遵循靜音鍵設定。如果希望在靜音時也能播放聲音,可以設定obeyMuteSwitch為false。

自動播放和迴圈播放

設定autoplay和loop屬性可以自動播放和迴圈播放音訊,一般適用於背景音樂。

var bgm = wx.createInnerAudioContext();
bgm.autoplay = true;
bgm.loop = true;
bgm.src = 'audio/bgm.mp3';
複製程式碼

處理音訊中斷事件

音訊中斷事件指的是在遊戲期間,音訊被系統打斷時觸發的事件。音訊中斷事件分為中斷開始和中斷結束事件,分別使用wx.onAudioInterruptionBegin()和wx.onAudioInterruptionEnd()來監聽。

以下事件會觸發音訊中斷開始事件:轉到電話、鬧鐘響起、系統提醒、收到微信好友的語音/視訊通話請求。被中斷後,小程式內所有音訊會被暫停,並在中斷結束之前不能再播放成功。

中斷結束之後,被暫停的音訊不會自動繼續播放,如果小遊戲有背景音樂的話,需要監聽音訊中斷結束事件,並在收到中斷結束事件之後呼叫背景音樂繼續播放。

wx.onAudioInterruptionEnd(function(){
    bgm.play();
})
複製程式碼

如果小遊戲的邏輯強依賴音樂的播放,則需要在音訊開始中斷的時候暫停遊戲。

wx.onAudioInterruptionBegin(function(){
    // 暫停遊戲
})
複製程式碼

相容性說明

目前兩個平臺完全支援的音訊格式有mp3、aac、wav。其他格式存在系統差異,不保證支援。

複用已有的音訊例項

對於相同的音效,應該複用已有的音訊例項,而不是建立一個新的音訊例項。

及時銷燬不需要的音訊例項

如果一個音訊不再需要使用了,可以呼叫InnerAudioContext.destroy()介面提前銷燬這個例項。

Android同時播放的音訊數量限制

由於系統限制,在Android上最多同時播放10個音訊,超出的部分會做有損處理,對開發者來說不感知,但開發者應儘量避免同時播放過多音訊。

關於小程式音訊播放的內容就為大家介紹到這裡,下節我們將為大家介紹檔案系統的相關內容。

相關文章