Первый SKAction в цепочке анимаций не работает должным образом - PullRequest
0 голосов
/ 27 апреля 2019

Я хочу сделать 2 действия последовательно, но я хочу изменить переменную между действиями. По какой-то причине первая анимация в цепочке никогда не работает. Что он делает, так это замораживает код на долгое время (дольше, чем предполагается для анимации), а затем переходит к следующей анимации, не воспроизводя первую.

Я попытался выполнить первое действие, а затем второе действие (теперь первое) не запустилось так же, как и другое. Я также попытался изменить то, что делает анимация, и те же результаты. Я знаю о функции последовательности, но поскольку я хочу изменить переменную между анимациями, я не использую ее.

Я установил SKActions так:

fadeIn  = SKAction.fadeAlpha(to: 1.0, duration: 0.5)
fadeOut = SKAction.fadeAlpha(to: 0.0, duration: 0.5)

и затем запустите их так:

self.textSKNode.run(self.fadeOut) { // this action does not run
    self.label.text = text // changing the variable
    self.textSKNode.run(self.fadeIn) { // this action runs perfectly
        // then I run some code here of outside objects
    }
}

1 Ответ

0 голосов
/ 27 апреля 2019

Один из способов - использовать SKAction.run, чтобы изменить метку, а затем создать последовательность, как показано ниже. Я немного замедлил его, чтобы увидеть эффект более четко.

let fadeInAction  = SKAction.fadeAlpha(to: 1.0, duration: 2.0)
let fadeOutAction = SKAction.fadeAlpha(to: 0.0, duration: 2.0)
let changeLabelTextAction = SKAction.run({
    textSKNode.text = "New Text"
})

let actionSequence = SKAction.sequence([fadeOutAction, changeLabelTextAction, fadeInAction])
textSKNode.run(actionSequence)
...