играть несколько AVAudioPlayer одновременно асинхронно? - PullRequest
1 голос
/ 17 марта 2019

У меня есть фоновый AVAudioPlayer, который нормально работает просто отлично. Теперь у меня есть событие, которое запускает асинхронное действие с задержкой, здесь я хочу воспроизвести другой звук, в то время как другой должен продолжать играть. Поэтому я делаю новый:

DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
    guard let urlStr = Bundle.main.path(forResource: "File1", ofType: ".mp3") else { fatalError() }
    self.player = try? AVAudioPlayer(contentsOf: URL(fileURLWithPath: urlStr), fileTypeHint: "mp3")
    self.player?.play()
}

DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
    guard let urlStr = Bundle.main.path(forResource: "File2", ofType: ".mp3") else { fatalError() }
    let p = try? AVAudioPlayer(contentsOf: URL(fileURLWithPath: urlStr), fileTypeHint: "mp3")
    p?.play()
}

Итак, первый работает нормально (только для отправки, чтобы показать, что он работает также асинхронно). Второй тоже работает, что означает отсутствие ошибок. Тем не менее, я слышу только первый ...

1 Ответ

1 голос
/ 18 марта 2019

Почему вы создаете нового игрока внутри асинхронного вызова?У меня были похожие проблемы, и это должно сработать, если вы объявите новую переменную за пределами вашей непосредственной асинхронной области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...