我决定中断与SKAction.playSoundFileNamed的痛苦关系,并继续在我们的项目中使用SKAudioNodes-突破点是它们完全被中断打断,没有任何一致性。
我们正在尝试为SKAction s.t创建扩展。它将模拟播放SKAudioNodes而不会增加延迟,类似于在playSoundFileNamed中将waitForCompletion属性设置为false时。但是,我们要添加SKAudioNode,然后在短时间内(3.0 s)对其进行处理,但是在扩展中,这将使3.0 s的延迟加到任何动作上。我认为我们必须有此延迟,然后将其删除,因为否则我们将不必要地累积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序列中使用它们,并且对实现此目标的最佳方法有任何想法吗?