2016-06-24 5 views
1

Я боролся с хардкором с простой задачей: Воспроизведение аудиофайла в фоновом режиме при загрузке сцены SpriteKit.AVAudioPlayer не работает над сценой SpriteKit Loading

Я скопировал аудиофайл под названием «Test Song.wav» в свой проект, и он также был найден в моих активах, когда я смотрю под «Build Phases»> «Copy Bundle Resources» (это было то, что this post предложил проверить)

Мой код составлен просто отлично, и мой ring/silent switch был правильно повернут, чтобы позвонить, но звук не воспроизводится при загрузке сцены.

Я использую

  • Xcode версии 8.0 бета
  • iPhone 6S Plus под управлением IOS 10 Beta 1

Вот мой сломаны код:

import AVFoundation 

class GameScene: SKScene { 

    override func didMove(to view: SKView) { 

     if let path = Bundle.main().pathForResource("Test Song", ofType: "wav") { 

     let filePath = NSURL(fileURLWithPath:path) 

     let songPlayer = try! AVAudioPlayer.init(contentsOf: filePath as URL) 

     songPlayer.numberOfLoops = 0 

     songPlayer.prepareToPlay() 

     songPlayer.play() 

     } 
    } 
} 

Примечание: Я узнал, что в Swift 3.0 метод init() AVAudioPlayer больше не принимает параметр NSError, поэтому эта треска е НЕ компиляции:

var error:NSError? 
audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error) 
+1

Здравствуйте, я ценю ваши усилия умеренности, и вы технически правильно, что это дубликат. Я не пытаюсь спорить: мне действительно интересно, как работает этот сайт. Имея это в виду: я не могу не задаться вопросом, почему мой пост не может стоять сам по себе, не опускаясь за то, что он не полезен. Я сделал пост «Q & A», поэтому никто не тратил время на то, чтобы отвечать/на него отвечать, он написан в Swift 3.0 и для iOS 10, и я цитирую все мои источники. Если бы я не знал сообщение, которое вы связали с существующим, как я должен был знать, чтобы внести свой комментарий в этот пост вместо того, чтобы сделать свой собственный пост? –

ответ

1

Благодаря this website я узнал, что моя проблема была сфера моего AVAudioPlayer объекта.

Вот рабочий код:

class GameScene: SKScene { 

    var songPlayer:AVAudioPlayer? 

    override func didMove(to view: SKView) { 

     if let path = Bundle.main().pathForResource("Test Song", ofType: "wav") { 

      let filePath = NSURL(fileURLWithPath:path) 

      songPlayer = try! AVAudioPlayer.init(contentsOf: filePath as URL) 

      songPlayer?.numberOfLoops = 0 //This line is not required if you want continuous looping music 

      songPlayer?.prepareToPlay() 

      songPlayer?.play() 

     } 
    } 
} 
+0

На каком веб-сайте вы говорите? Ссылка отсутствует в вашем ответе. –