Я только что протестировал 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 такая же, как и в вашем примере.
Я думаю, вы уже знаете, но не мешало бы упомянуть, как вы должны добавить звуковые файлы в проект:
- перетащить звук к вашему проекту
- В Destination разделе, выберите «Копировать в случае необходимости "
- В разделе« Добавленные папки »выберите« Создать группы ».
- В« Добавить в цель »выберите цель.
Если все еще не работает, я бы поставил под «Build Phases» -> «Copy Bundle Resources», чтобы увидеть, присутствует ли «explosion.mp3». Если это не так, используйте кнопку + (добавьте элементы, которые будут отображаться при наведении) и добавьте их.
Подсказка:
Обратите внимание, что с помощью mp3-файл для коротких звуков не рекомендуется, так как mp3 сжат, и это требует аппаратного декодирования. Декодирование занимает время процессора. Кроме того, можно использовать только один mp3-файл с использованием аппаратного декодера. Если вы воспроизводите более одного mp3 одновременно, они будут декодироваться с помощью программного обеспечения, и это происходит медленно. Из документов:
При использовании аппаратного декодирования, устройство может воспроизводить только один экземпляр одного из поддерживаемых форматов одновременно. Например, если вы воспроизводите стереофонический звук MP3 с помощью аппаратного кодека , второй одновременный звук MP3 будет использовать программное декодирование. Аналогичным образом вы не можете одновременно воспроизводить звук AAC и ALAC с использованием аппаратного обеспечения.Если приложение iPod воспроизводит звук AAC или MP3 в фоновом режиме, он заявляет аппаратный кодек; ваше приложение затем воспроизводит аудио AAC, ALAC и MP3 с использованием программного декодирования.
Лучшим вариантом для воспроизведения коротких звуков являются форматы .wav и .caf.
Убедитесь, что вы добавили звуковые файлы в комплект. Также проверьте его на устройстве. Надеюсь, что вы называете [взлёт взрывного звука]; – abintom
@ abyt07 Да, это внутри пакета, и я получаю ту же ошибку на устройстве/симуляторе. –