【发布时间】:2015-12-22 11:16:43
【问题描述】:
在 iOS 8/Xcode 6 中,我有一个包含音效的函数。多次更改代码后,它不再适用于 iOS 9。这是我尝试过的:
原文:
let bangSoundEffect = SKAction.playSoundFileNamed("Bang.mp3", waitForCompletion: false)
runAction(bangSoundEffect)
其他尝试:
self.runAction(SKAction.playSoundFileNamed("Bang.mp3", waitForCompletion: false))
还有:
func playRocketExplosionSound(filename: String) {
let url = NSBundle.mainBundle().URLForResource(
filename, withExtension: nil)
if (url == nil) {
print("Could not find file: \(filename)")
return }
var error: NSError? = nil
do {
backgroundMusicPlayer =
try AVAudioPlayer(contentsOfURL: url!)
} catch let error1 as NSError {
error = error1
backgroundMusicPlayer = nil
}
if backgroundMusicPlayer == nil {
print("Could not create audio player: \(error!)")
return}
backgroundMusicPlayer.numberOfLoops = 1
backgroundMusicPlayer.prepareToPlay()
backgroundMusicPlayer.play() }
playRocketExplosionSound("Bang.mp3")
我正在拔头发。我在不同的场景中使用相同的代码来获得另一种音效,效果很好!!怎么了? 我注意到声音效果有时会在模拟器中开始播放,但它没有完成并抛出此错误:
2015-09-24 19:12:14.554 APPNAME[4982:270835] 19:12:14.553 ERROR: 177: timed out after 0.012s (735 736); mMajorChangePending=0
它在实际设备上根本不起作用。
有什么问题? :'(
【问题讨论】:
-
我在这里提供了导致问题的完整功能:stackoverflow.com/questions/32723431/…
-
不在模拟器中测试?
-
它在实际设备上根本不起作用。
-
很难说。通常在电子游戏中,对于这些声音,您希望避免任何有损压缩格式,因为它们需要时间来解码。你为什么不试着把“砰”的声音变成WAV?我从来没有见过用 MP3 播放短音的电子游戏。我很确定Apple可以硬件加速一个音轨的解码,但可能同时出现多个问题(WAV文件不需要解码)。如果这没有帮助,那么问题出在其他地方,也许 SK 在某些情况下会杀死声音。
-
如果代码适用于其他声音,那么我会查看资源本身。删除它并重新添加它,确保将项目复制到目标组的文件夹中。
标签: ios sprite-kit swift2 ios9 xcode7