Есть ли эквивалент isPlaying () для SKAudioNode? - PullRequest
1 голос
/ 19 июня 2019

Я экспериментирую с другими вариантами звуковых эффектов для нашей игры после того, как определю, что SKAction.playSoundFileNamed не только глючит и имеет утечку, но также создает сбой, особенно во время прерываний IAP (не в порядке, Apple).Мы пытаемся использовать SKAudioNodes, но проблема в том, что у нас перекрывающиеся звуковые эффекты.Мы хотели бы использовать систему, в которой у нас есть очередь SKAudioNode, которые существуют с одинаковым эффектом: например, audioNode1, audioNode2, audioNode3, со звуком «fxmatch», и если audioNode1.isPlaying (), то мы будем двигаться дальше вочередь к audioNode2, затем audioNode3 и т. д. У нас уже есть подобный синтаксис для AVAudioPlayer, где мы проверяем isPlaying ().Есть ли какой-нибудь эквивалент метода для SKAudioNodes?

1 Ответ

1 голос
/ 19 июня 2019
if let playerNode = audioNode.avAudioNode as? AVAudioPlayerNode{
    print(playerNode.isPlaying)
}

или

extension SKAudioNode
{
    var isPlaying : Bool { return (avAudioNode as? AVAudioPlayerNode)?.isPlaying ?? false }
}

...

print(audioNode.isPlaying)
...