我在Xcode 6.1中使用Swift和SpriteKit创建游戏,我无法做到 让AVAudioPlayer初始化。我的菜单上有一个SKScene,而我 想要在我的声音中播放音乐"声音"名为" menu.mp3的文件夹。"但是,它 每次我运行游戏时都会崩溃。我的代码如下:
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框架并将其导入此场景, 但它继续崩溃。我的filePath有问题吗? 这让我的audioPlayer没有初始化或什么?我试过了 切换到其他方式,并使不同的部分可选,但我 无法让它发挥作用。谢谢!
答案 0 :(得分:0)
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")
}