2015-01-09 99 views
0

我在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框架並將其導入到這個場景中,但它仍然崩潰。我的文件路徑 有什麼問題,導致我的音頻播放器無法初始化?我試過 切換到其他方式,使不同的部分可選,但我 不能讓它工作。謝謝!

回答

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