声音在游戏中播放,但似乎无法通过AVAudioPlayer获得任何输出,令人头疼。最初这是作为一个班级设置的,但是当它不起作用时,我尝试对声音输出进行硬编码,以检查是否存在问题。它仍然没有工作,我尝试了几个不同的文件,以排除有问题的音频文件或格式。正在检索URL,但音频播放器似乎只是输出没有声音。通过SKAction播放声音但不通过AVAudioPlayer
我已阅读了一些关于类似问题的线索,并且弄清楚了系统声音设置,但没有任何区别。有人建议模拟器在某些情况下不能输出声音,但我不认为这是这种情况。
let myFile = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("gong", ofType: "wav")!)
print ("URL data: \(myFile)")
do{
let audioPlayer = try AVAudioPlayer(contentsOfURL:myFile)
audioPlayer.prepareToPlay()
audioPlayer.play()
}catch {
print("Error playing sound")
}
然而,这起罚款:
self.runAction(SKAction.playSoundFileNamed("gong", waitForCompletion: false))
我需要AVAudioPlayer的功能我希望能够启动,停止和控制声音的音量,因为它循环。我使用XCode 7.3.1和Swift 2.2。
任何想法?
非常感谢, 千瓦
你导入AVFoundation的权利? – Pierce
是的。我想我已经解决了。我需要在AVAudioPlayer的一个范围内创建一个实例,这个范围是持久的,所以它不会被自动垃圾收集删除。另外,我认为prepareToPlay命令没有时间在执行play命令之前将文件加载到内存中,并且播放器也超出了范围,并且在退出调用代码块时几乎立即收集它。结果:没有机会玩。我将创建一个类,使用prepareToPlay将所有声音预加载到init()阶段的内存中,以便可以立即调用它们。谢谢 – Kwangle
这就是我想说的,我从来没有使用'prepareToPlay'方法,并且我被告知通常没有必要。 – Pierce