首页 > 解决方案 > SKAudioNode 是否有等效的 isPlaying()?

问题描述

在确定 SKAction.playSoundFileNamed 不仅有错误和泄漏,而且在 IAP 中断期间(不是 OK,Apple),我正在为我们的游戏尝试其他音效选项。我们正在尝试使用 SKAudioNodes,但问题是我们有重叠的音效。我们想使用一个系统,其中我们有一个 SKAudioNodes 队列,它们具有相同的效果:例如,audioNode1、audioNode2、audioNode3,都带有声音“fxmatch”,如果 audioNode1.isPlaying(),那么我们将继续排队到 audioNode2,然后是 audioNode3,等等。我们已经为 AVAudioPlayer 提供了类似的语法,我们在其中检查 isPlaying()。SKAudioNodes 是否有一些等效的方法?

标签: iossprite-kitavfoundationsoundeffectskaudionode

解决方案


if let playerNode = audioNode.avAudioNode as? AVAudioPlayerNode{
    print(playerNode.isPlaying)
}

或者

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

...

print(audioNode.isPlaying)

推荐阅读