QQ小游戲 音頻播放

2020-07-15 15:33 更新

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

使用 InnerAudioContext 播放

通過 qq.createInnerAudioContext() 接口可以創(chuàng)建一個音頻實例 InnerAudioContext ,通過這個實例可以播放音頻。

  1. const audio = qq.createInnerAudioContext()
  2. audio.src = url // src 可以設置 http(s) 的路徑,本地文件路徑或者代碼包文件路徑
  3. audio.play()

在 iOS 系統(tǒng)上,默認遵循靜音鍵設置。如果希望在靜音時也能播放聲音,可以設置

  1. obeyMuteSwitch false。
  2. audio.obeyMuteSwitch = false

自動播放和循環(huán)播放 設置 autoplay 和 loop 屬性可以自動播放和循環(huán)播放音頻,一般適用于背景音樂。

  1. const bgm = qq.createInnerAudioContext()
  2. bgm.autoplay = true
  3. bgm.loop = true
  4. bgm.src = url

回到前臺時恢復背景音樂

當小游戲被隱藏到后臺時,所有音頻會被暫停,并在回到前臺之前都不能再播放成功。 回到前臺之后,被暫停的音頻不會自動繼續(xù)播放,如果小游戲有背景音樂的話,需要監(jiān)聽回到前臺事件,并在收到回到前臺事件之后調用背景音樂繼續(xù)播放。

  1. qq.onShow(function () {
  2. bgm.play()
  3. })

處理音頻中斷事件

音頻中斷事件指的是在游戲期間,音頻被系統(tǒng)打斷時觸發(fā)的事件。音頻中斷事件分為中斷開始和中斷結束事件,分別使用 qq.onAudioInterruptionBegin()qq.onAudioInterruptionEnd() 來監(jiān)聽。 以下事件會觸發(fā)音頻中斷開始事件:接到電話、鬧鐘響起、系統(tǒng)提醒、收到QQ好友的語音/視頻通話請求。被中斷之后,小游戲內所有音頻會被暫停,并在中斷結束之前都不能再播放成功。 中斷結束之后,被暫停的音頻不會自動繼續(xù)播放,如果小游戲有背景音樂的話,需要監(jiān)聽音頻中斷結束事件,并在收到中斷結束事件之后調用背景音樂繼續(xù)播放。

  1. qq.onAudioInterruptionEnd(function () {
  2. bgm.play()
  3. })

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

  1. qq.onAudioInterruptionBegin(function () {
  2. // 暫停游戲
  3. })

兼容性說明

目前兩個平臺完全支持的音頻格式有 mp3、aac、wav。其他格式存在系統(tǒng)差異,不保證支持。

最佳實踐

復用已有的音頻實例

對于相同的音效,應該復用已有的音頻實例,而不是重新創(chuàng)建一個音頻實例。

及時銷毀不需要的音頻實例

如果一個音頻不再需要使用了,可以調用 InnerAudioContext.destroy() 接口提前銷毀這個實例。

Android 同時播放的音頻數(shù)量限制

由于系統(tǒng)限制,在 Android 上最多同時播放 10 個音頻,超過的部分會做有損處理,對開發(fā)者來說不感知,但開發(fā)者應盡量避免同時播放過多音頻。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號