我在子节点上有动画操作,我想在场景的动作序列中运行它。我想在子节点操作完成后才调用一些代码块。
这是儿童行动:
func animationAction(animation: Animation) -> SKAction {
let textures = animations[animation.rawValue]
let action = SKAction.animateWithTextures(textures, timePerFrame: 1 / NSTimeInterval(30))
return SKAction.runAction(action, onChildWithName: name!)
}
以下是为场景和子节点hero
运行的序列操作:
var actions = [SKAction]()
actions.append(hero.animationAction(Animation.Loose))
actions.append(SKAction.runBlock({ () -> Void in
// point #1
}))
runAction(SKAction.sequence(actions))
由于某些原因,point #1
处的代码在动画开始后立即运行。所以它没有排序。这是正确的还是我弄错了?
我知道我可以将完成块用于子节点动画,但我想知道它是否可以通过排序?
答案 0 :(得分:0)
第一个问题:它应该是一个序列。
序列是一组连续运行的动作。当节点运行序列时,将按连续顺序触发操作。当一个操作完成时,下一个操作立即开始。当序列中的最后一个操作完成时,序列操作也会完成。
这就是Apple文档所说的。我有同样的问题。对我来说,它与完成块一起工作。我认为它是一个快速的错误,因为它与objective-c
一起工作得很好var actions = [SKAction]()
actions.append(hero.animationAction(Animation.Loose))
runAction(SKAction.sequence(actions), completion: {
// point #1
})