我在創建一個應用程序時使用了很多sfx和背景音樂。但我找不到通過視圖控制器來繼承這種類型的數據的最佳方式。我是否必須在每個視圖控制器中初始化我的音頻?但是如果我想停止在預覽VC中啓動的音樂,該怎麼辦?在每個視圖控制器中創建音樂實例
這是我使用的代碼:
do {
// Music BG
let resourcePath = NSBundle.mainBundle().pathForResource("MusicaBg", ofType: "wav")!
let url = NSURL(fileURLWithPath: resourcePath)
try musicPlayer = AVAudioPlayer(contentsOfURL: url)
// SFX for Button
let resourcePath2 = NSBundle.mainBundle().pathForResource("botaoApertado", ofType: "wav")!
let url2 = NSURL(fileURLWithPath: resourcePath2)
try botaoApertado = AVAudioPlayer(contentsOfURL: url2)
} catch let err as NSError {
print(err.debugDescription)
}
什麼是做到這一點的最好方法是什麼?
所以我需要創建一個新的Swift文件,每次我想播放或停止音樂時實現一個類和子類? –
它的工作!感謝你的回答。但是,所以我可以更好地理解這個概念,代碼中sharedInstance常量的作用是什麼?我沒搞懂 –
@ZéMoreira當你需要某件東西時,使用Singleton模式,並且你希望它可以從多個地方訪問。您的AudioPlayer就是一個很好的例子,因爲它在整個應用程序中都是活着的,它的使用位置應該沒有關係。 「sharedInstance」的原因是雙重的:1.明確聲明這個「實例」或對象的副本由任何使用它的人共享,2.因此你可以擁有實例變量/函數。我們通過使它成爲「靜態」來保證只有一個,這意味着它屬於AudioEngine類。 –