iOS 開發(fā) 中級:Audio之利用AVAudioPlayer實現(xiàn)SystemSoundService的功能

在以前的博文中,我們已經(jīng)講解了AVAudioPlayer和SystemSoundService的用法。這兩種功能在一定程度上都適合作為游戲音效的播放方式。而兩者也各有其優(yōu)缺點。下面我們來總結(jié)一下有哪些:
iPhone OS 主要提供以下了幾種播放音頻的方法:

System Sound Services
AVAudioPlayer 類
Audio Queue Services
OpenAL

關(guān)于System Sound Services

System Sound Services 是最底層也是最簡單的聲音播放服務(wù),調(diào)用 AudioServicesPlaySystemSound 這個方法就可以播放一些簡單的音頻文件,使用此方法只適合播放一些很小的提示或者警告音,因為它有很多限制:

      ■ 聲音長度要小于 30 秒

      ■ In linear PCM 或者 IMA4 (IMA/ADPCM) 格式的

      ■ 打包成 .caf, .aif, 或者 .wav 的文件

      ■ 不能控制播放的進(jìn)度

      ■ 調(diào)用方法后立即播放聲音

      ■ 沒有循環(huán)播放和立體聲控制

1)AVAudioPlayer的優(yōu)點
(1)可以播放任意長度音樂;
(2)可以循環(huán)播放;
(3)可以控制播放的時間;
(4)可以控制聲道的音量實現(xiàn)立體聲效果;
(5)可以調(diào)整音量。
2)AVAudioPlayer的缺點
(1)播放之前必須先加載,不能立即播放;
(2)一次一個AudioPlayer只能播放所加載的音樂,不能同時播放好幾次同樣的音樂。
(3)沒有振動效果
3)SystemSoundService的優(yōu)點:
(1)能夠立即播放
(2)能夠在同一時間播放多次音樂
(3)可以加上振動效果
4)SystemSoundService的缺點:
(1)不能循環(huán)播放
(2)不能控制播放時間
(3)不能控制聲道
(4)不能控制音量
(5)不能暫停音樂

我們發(fā)現(xiàn),這兩種音樂播放方式的優(yōu)缺點幾乎是完全互補的。那么,有什么用呢?
關(guān)鍵:我們這里考慮的是游戲音效的播放!都是短時間的音頻播放!
想象一下游戲,有時候我們要重復(fù)的播放一個音效,有時候我們想來一個振動,有時候我們需要在短時間內(nèi)播放同一個音頻多次!
因此,我們可以考慮綜合兩者的功能!
辦法:
利用AVAudioPlayer來實現(xiàn)SystemSoundService的效果!彌補AVAudioPlayer的缺點

我們先明確一下我們需要的功能:
(1)初始化后即可立即播放
(2)能在一個時間段內(nèi)播放同一音頻多次。這個再做個詳細(xì)說明:我們使用AVAudioPlayer時,play后必須等其停止了才能重新播放。我們這里要改進(jìn)的是即使前面的播放還沒有結(jié)束,我們也可以啟動新的播放,這個特別適用于播放敲擊的聲音,這樣我們會感覺聽到多個敲擊的聲音,而不是只有一個。記住這里不是講和其他的AVAudioPlayer混音。
(3)能循環(huán)播放
(4)能暫停停止播放
(5)能播放震動和播放音頻并震動
(6)能調(diào)節(jié)聲道
(7)能調(diào)節(jié)音量

http://blog.csdn.net/songrotek/article/details/8988284

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

相關(guān)閱讀更多精彩內(nèi)容

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