runBlock 没有按顺序工作?

runBlock not working in sequence?

我正在尝试创建一个基本的生成序列 - 必须创建方块,moveDownLeft,然后 removeLeft。当之前使用 self.addChild(block1) 添加块时,moveDownLeftremoveLeft 可以自己正常工作,但是我需要在序列中包含 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])) 

序列中的任何内容都不起作用,因为该块不是首先创建的。为什么会这样?

您的代码片段太短,但它看起来像是一个典型的先有鸡还是先有蛋的问题。

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

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