子节点上的运行操作未排序

时间:2015-09-01 15:46:14

标签: ios swift sprite-kit

我在子节点上有动画操作,我想在场景的动作序列中运行它。我想在子节点操作完成后才调用一些代码块。

这是儿童行动:

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处的代码在动画开始后立即运行。所以它没有排序。这是正确的还是我弄错了?

我知道我可以将完成块用于子节点动画,但我想知道它是否可以通过排序?

1 个答案:

答案 0 :(得分:0)

第一个问题:它应该是一个序列。

  

序列是一组连续运行的动作。当节点运行序列时,将按连续顺序触发操作。当一个操作完成时,下一个操作立即开始。当序列中的最后一个操作完成时,序列操作也会完成。

这就是Apple文档所说的。我有同样的问题。对我来说,它与完成块一起工作。我认为它是一个快速的错误,因为它与objective-c

一起工作得很好
var actions = [SKAction]()
actions.append(hero.animationAction(Animation.Loose))
runAction(SKAction.sequence(actions), completion: {
    // point #1
})