小遊戲內只有一種音訊播放的方式,即使用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個音訊,超出的部分會做有損處理,對開發者來說不感知,但開發者應儘量避免同時播放過多音訊。
關於小程式音訊播放的內容就為大家介紹到這裡,下節我們將為大家介紹檔案系統的相關內容。