动作序列

时间:2015-05-18 12:45:06

标签: swift sprite-kit

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

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。我有这个。但我不知道如何写一个行动,上面写着“将变量值从0改为1”

谢谢你们:D

1 个答案:

答案 0 :(得分:1)

您有两个选择:您可以将完成块传递给runActionSKAction完成后执行。来自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]))

希望有所帮助!