Звук не воспроизводится без точки останова - PullRequest
1 голос
/ 27 января 2020

Звуковой файл воспроизводится, когда я добавляю точки останова в нижеуказанные функции. Но звуковой файл не воспроизводится, если я запускаю приложение без точки останова.

Я вызываю эту функцию при нажатии кнопки как Звук (). PlaySounds ()

import AVFoundation

class Sound {

    private var audioplayer:AVAudioPlayer!
    func playSounds()
    {
        if let path = Bundle.main.path(forResource: "Audio/ring.mp3", ofType: nil)
        {
            let url = URL(fileURLWithPath: path)
            do {
                self.audioplayer = try AVAudioPlayer(contentsOf: url)
                self.audioplayer.numberOfLoops = 3
                self.audioplayer.prepareToPlay()
                self.audioplayer.play()
                }

            catch {
                print("Couldn't load  file")

            }
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 27 января 2020

Ваш Sound объект освобождается до того, как он сможет воспроизвести звук.

Сохраните его там, откуда вы его вызываете:

var sound = Sound()

// for example to play sound call 
func playPressed(){
  sound.playSounds()
}
0 голосов
/ 27 января 2020

Переведите вашего игрока в глобальную переменную, подобную этой. В противном случае это будет тупик.

var audioplayer:AVAudioPlayer!

Также вы можете изменить путь к ресурсу, извлекая логи c ниже,

if let path = Bundle.main.path(forResource: "ring.mp3", ofType: "mp3")

Или вы можете напрямую использовать Bundle.main.url(forResource: withExtention) метод.

...