动作序列
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]))
希望对您有所帮助!
具有以下代码,当两个对象发生碰撞时 运行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]))
希望对您有所帮助!