【发布时间】:2015-09-21 13:23:57
【问题描述】:
我正在尝试以各种方式播放声音:首先我尝试使用 SpriteKit 的操作:
sprite.runAction(SKAction.playSoundFileNamed("explosion.mp3", waitForCompletion: false))
我还尝试将这段代码分成两部分:在 init 方法中我初始化动作,稍后执行。但即使我只是初始化 SKAction,应用程序也会崩溃:
self.soundAction = SKAction.playSoundFileNamed("explosion.mp3", waitForCompletion: true)
我也尝试过使用 AVFoundation。这段代码在 init 方法中:
let explosionURL = NSBundle.mainBundle().URLForResource("explosion", withExtension: "mp3")
var error:NSError?
let data = NSData(contentsOfURL: explosionURL!)
explosionSoundPlayer = AVAudioPlayer(data: data, fileTypeHint: AVFileTypeMPEGLayer3, error: &error)
if explosionSoundPlayer != nil {
explosionSoundPlayer?.prepareToPlay()
} else {
println(error?.localizedDescription)
}
我不得不使用 NSData 对象,因为它使用 URL 失败。这样它也失败了,但至少它给了我一个更有意义的错误描述:
Optional("操作无法完成。(OSStatus error -39.)")
【问题讨论】:
-
确保您已将声音文件添加到捆绑包中。还要在设备中验证它。希望你打电话给[explosionSoundPlayer play];
-
@abyt07 是的,它在包内,我在设备/模拟器上遇到同样的错误。
标签: ios swift sprite-kit avfoundation