4

我决定断绝我与 SKAction.playSoundFileNamed 的痛苦关系,并继续在我们的项目中使用 SKAudioNodes —— 断点是它们完全被中断而没有任何一致性。

我们正在尝试为 SKAction st 创建一个扩展,它将模拟播放 SKAudioNodes 而不会增加延迟,类似于将 playSoundFileNamed 中的 waitForCompletion 属性设置为 false 时。但是,我们正在添加 SKAudioNode,然后在短时间内(3.0 秒)处理它,但在扩展中,这会在任何操作上增加 3.0 秒的延迟。我认为我们必须有这个延迟然后删除,否则我们将不必要地积累 SKAudioNodes。这是我们当前的代码:

func playAudioNode(node: SKSpriteNode?, sound: SoundType, delay: Double)
{
    if node == nil
    {
        return
    }

    let audioNode = audioNodeDictionary[sound]!.copy() as! SKAudioNode

    node!.addChild(audioNode)

    let playSound = SKAction.run
    {
        audioNode.run(.play())
    }

    node!.run(SKAction.sequence([SKAction.wait(forDuration: delay), playSound, SKAction.wait(forDuration: 3.0), SKAction.removeFromParent()]))
}

有没有人以类似的临时方式使用 SKAudioNodes 并在 SKAction 序列中使用它们,并对实现这一点的最佳方式有任何想法?

4

0 回答 0