如何使用Swift初始化AVAudioPlayer
问题描述:
我在Xcode 6.1中使用Swift和SpriteKit创建了一个游戏,并且我不能使用 使AVAudioPlayer初始化。我有一个SKScene用于我的菜单,而我 想要在名为“menu.mp3”的“声音”文件夹中运行音乐。但是,每当我运行我的游戏时,它就会崩溃。我的代码如下:如何使用Swift初始化AVAudioPlayer
let filePath:NSURL = NSURL(fileURLWithPath: "menu.mp3")!
var er:NSError?
let audioPlayer:AVAudioPlayer = AVAudioPlayer(contentsOfURL: filePath, error: &er)
if (er != nil) {
} else {
audioPlayer.play()
}
我把这个在我的初始化我super.init电话之后。我得到的错误如下:
fatal error: unexpectedly found nil while unwrapping an Optional value
我已经尝试了很多修正,但我想不出什么错误。 我已经添加了AVFoundation框架并将其导入到这个场景中,但它仍然崩溃。我的文件路径 有什么问题,导致我的音频播放器无法初始化?我试过 切换到其他方式,使不同的部分可选,但我 不能让它工作。谢谢!
答
let documentsUrl = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first as NSURL
func preparePlayer(name:String){
var error:NSError?
let fileUrl = documentsUrl.URLByAppendingPathComponent(name)
// or
// let fileUrl = NSBundle.mainBundle().bundleURL.URLByAppendingPathComponent(name)
let audioPlayer = AVAudioPlayer(contentsOfURL: fileUrl, error: &error)
if error == nil {
audioPlayer.play()
}
}
override func viewDidLoad() {
super.viewDidLoad()
preparePlayer("menu.mp3")
}