【问题标题】:Is there an isPlaying() equivalent for SKAudioNode?SKAudioNode 是否有等效的 isPlaying()?
【发布时间】:2019-11-02 08:46:52
【问题描述】:

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

【问题讨论】:

    标签: ios sprite-kit avfoundation soundeffect skaudionode


    【解决方案1】:
    if let playerNode = audioNode.avAudioNode as? AVAudioPlayerNode{
        print(playerNode.isPlaying)
    }
    

    或者

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

    【讨论】:

    • 一如既往的感谢。这很好,但是当我停止节点时,这只会显示 isPlaying == false 吗?我有一些奇怪的行为。在一个小项目中,似乎一旦你 play() isPlaying == true 直到你停止,那么当我确定 SKAudioNodes 完成播放时,我必须手动停止它们吗?注意我有 autoplaylooped = false。
    • 在我的实际项目中,这种行为也是不稳定的。我能描述它的最好方式是它“有点工作”——有时 SKAudioNodes 会排队多个声音,有时 isPlaying() 在声音播放后返回 false,有时它会返回 true。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 2016-10-26
    • 2023-03-04
    • 2012-02-26
    • 2010-09-22
    • 2013-01-26
    • 2013-11-12
    相关资源
    最近更新 更多