runBlock不按顺序工作?

时间:2015-01-11 19:21:45

标签: swift sprite-kit

我正在尝试创建一个基本的生成序列 - 必须创建块,moveDownLeft,然后removeLeft。使用moveDownLeft之前添加块时,removeLeftself.addChild(block1)可以正常工作,但我需要在序列中添加self.addchild

我可以看到这样做的唯一方法是使用runBlock,当我使用它时出错时我查看了这个问题:Swift: SKAction.runBlock -> Missing argument for parameter 'completion' in call BUT WHY?

所以现在我离开了这个:

 block1.runAction(SKAction.sequence([SKAction.runBlock({ self.addChild(self.block1) }), moveDownLeft, removeLeft])) 

序列中没有任何内容可以正常工作,因为首先不会创建块。为什么会这样?

1 个答案:

答案 0 :(得分:1)

您的代码片段太短但看起来像是典型的鸡和蛋问题。

  • 节点只有在作为子节点添加后才能运行,因此成为场景图的一部分
  • 你的节点应该运行一个动作,最终将自己添加到场景图中,但它还没有在场景图中,所以它不会运行该动作

首先将节点添加为子节点,然后运行该操作。如果您需要节点处于非活动状态一段时间,只需将其可见属性设置为NO即可。你也可以改变其他属性,即推迟创建物理体。