如何使用Swift初始化AVAudioPlayer

时间:2015-01-09 20:32:20

标签: ios audio swift avaudioplayer

  

我在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没有初始化或什么?我试过了   切换到其他方式,并使不同的部分可选,但我   无法让它发挥作用。谢谢!

1 个答案:

答案 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")
}