Я только что протестировал AVAudioPlayer, и он работает для меня в обоих случаях (либо с NSData, либо с NSUrl). Проверьте код ниже:
class GameScene: SKScene {
var audioPlayer : AVAudioPlayer?
var soundAction = SKAction.playSoundFileNamed("sound.wav", waitForCompletion: true)
override func didMoveToView(view:SKView) {
let explosionURL = NSBundle.mainBundle().URLForResource("music", withExtension: "mp3")
var error:NSError?
let data = NSData(contentsOfURL: explosionURL!)
audioPlayer = AVAudioPlayer(data: data, fileTypeHint: AVFileTypeMPEGLayer3, error: &error)
if audioPlayer != nil {
audioPlayer?.prepareToPlay()
} else {
println(error?.localizedDescription)
}
/*
var soundUrl = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("music", ofType: "mp3")!)
println(soundUrl)
var error:NSError?
audioPlayer = AVAudioPlayer(contentsOfURL: soundUrl, error: &error)
audioPlayer?.prepareToPlay()
*/
}
}
Вы можете воспроизводить такие звуки (например, в методе touchesBegan):
//audioPlayer?.play()
self.runAction(self.soundAction)
Попробуйте скопировать и вставить этот код (просто измените имена звуков и расширения), чтобы увидеть, возникают ли ошибки. Однако часть NSData такая же, как в вашем примере.
Я думаю, вы уже знаете, но не помешает упомянуть, как вы должны добавлять звуковые файлы в свой проект:
- Перетащите звук в свой проект
- В разделе «Назначение» выберите «Копировать, если необходимо».
- В разделе «Добавленные папки» выберите «Создать группы».
- В разделе «Добавить к целям» выберите цель.
Если все еще не работает, я бы проверил в разделе «Фазы сборки» -> «Копировать ресурсы пакета», чтобы увидеть, присутствует ли «explosion.mp3». Если это не так, используйте кнопку + (добавление элементов будет отображаться при наведении) и добавьте его.
Подсказка:
Обратите внимание, что использовать mp3-файл для коротких звуков не рекомендуется, поскольку mp3 сжат и требует аппаратного декодирования. Декодирование требует процессорного времени. Кроме того, с помощью аппаратного декодера можно воспроизвести только один mp3-файл. Если вы воспроизводите более одного mp3 одновременно, они будут декодированы программным обеспечением, а это медленно. Из документов:
При использовании аппаратного декодирования устройство может одновременно воспроизводить только один экземпляр одного из поддерживаемых форматов. Например, если вы воспроизводите стереозвук MP3 с использованием аппаратного кодека, второй одновременный звук MP3 будет использовать программное декодирование. Точно так же вы не можете одновременно воспроизводить звук AAC и ALAC с помощью аппаратного обеспечения. Если приложение iPod воспроизводит звук в формате AAC или MP3 в фоновом режиме, оно требует аппаратного кодека; затем ваше приложение воспроизводит аудио AAC, ALAC и MP3 с использованием программного декодирования.
Лучшим вариантом для воспроизведения коротких звуков являются форматы .wav и .caf.
person
Whirlwind
schedule
22.09.2015