【问题标题】:How to initialize AVAudioPlayer using Swift如何使用 Swift 初始化 AVAudioPlayer
【发布时间】:2015-01-09 20:32:20
【问题描述】:

我在 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 框架并将其导入到这个场景中, 但它继续崩溃。我的文件路径有问题吗 这使我的audioPlayer没有初始化还是什么?我试过了 切换到其他方式并使不同的部分可选,但我 无法让它工作。谢谢!

【问题讨论】:

    标签: ios audio swift avaudioplayer


    【解决方案1】:
    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")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-31
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 2016-01-08
      相关资源
      最近更新 更多