我在创建一个应用程序时使用了很多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类。 –