动画链中的第一个 SKAction 无法正常工作



我想按顺序制作 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
}
}

一种方法是使用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)

最新更新