Создание расширения SKAction для SKAudioNode - PullRequest
0 голосов
/ 12 февраля 2019

Я решил разорвать свои очень болезненные отношения с SKAction.playSoundFileNamed и перейти к использованию SKAudioNodes в нашем проекте - переломным моментом было их полное прерывание прерываниями без какой-либо согласованности.

Мы пытаемся создать расширение для SKAction, чтобы оно имитировало воспроизведение SKAudioNodes без добавления задержки, подобно тому, как для свойства waitForCompletion в playSoundFileNamed установлено значение false.Тем не менее, мы добавляем SKAudioNode, а затем удаляем его через короткий промежуток времени (3,0 с), но в расширении это добавит задержку в 3,0 с на любое действие.Я думаю, что мы должны иметь эту задержку, а затем удалить, потому что в противном случае мы будем накапливать SKAudioNode без необходимости.Вот наш текущий код:

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 аналогичным образом ad hoc и использует их в последовательностях SKAction, и есть какие-нибудь мысли о том, как лучше всего это реализовать?

...