动作序列

Action Sequence

具有以下代码,当两个对象发生碰撞时 运行s。

var A = SKAction.scaleBy(0.1, duration: 0.52)
vanish.runAction(A)

第 1 行 运行 进行缩放操作,第 2 行 运行对我想要的对象进行缩放操作。

但是,我如何 运行 在 END 操作中添加一些代码?比如,要将分数从 0 更改为 1?

目前我有这样的事情:

var A = SKAction.scaleBy(0.1, duration: 0.52)
vanish.runAction(A)

score = 1

但这不会等待操作完成。

我知道我需要使用 action.sequence。我有这个。但是我不知道如何写一个 "change value of variable from 0 to 1"

的动作

谢谢大家 :D

您有两个选择:您可以将完成块传递给 runAction,该块将在 SKAction 完成后执行。来自 documentation for SKNode:

func runAction(_ action: SKAction!, completion block: (() -> Void)!)

然后您可以像这样使用它:

vanish.runAction(A) {
    score = 1
    // If `score` is a property of your class you'll need to use self.score
}

或者,您可以使用 SKAction.runBlock 并使用一系列 SKAction,例如:

let scale = SKAction.scaleBy(0.1, duration: 0.52)
let complete = SKAction.runBlock { score = 1 }

vanish.runAction(SKAction.sequence([scale, complete]))

希望对您有所帮助!