Ios 2秒后添加Child

Ios 2秒后添加Child,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我试图在用户触摸屏幕2秒钟后添加Child(它在TouchsBegind内部),但它不起作用。我做错什么了吗 //show myLabel after 2 seconds self.myLabel.position = CGPoint(x: self.frame.width / 1.1, y: self.frame.height / 2) self.myLabel.text = "0" self.myLabel.zPosition = 4 self.myLabel.runAction(SKAc

我试图在用户触摸屏幕2秒钟后添加Child(它在TouchsBegind内部),但它不起作用。我做错什么了吗

//show myLabel after 2 seconds
self.myLabel.position = CGPoint(x: self.frame.width / 1.1, y: self.frame.height / 2)
self.myLabel.text = "0"
self.myLabel.zPosition = 4

self.myLabel.runAction(SKAction.sequence([SKAction.waitForDuration(2.0), SKAction.runBlock({
    self.addChild(self.myLabel)
)]))

问题是除非myLabel在场景中,否则操作不会在其上运行,因此将最后一部分更改为:

self.runAction(SKAction.sequence([SKAction.waitForDuration(2.0), SKAction.runBlock({
    self.addChild(self.myLabel)
})]))
或者更好:

self.runAction(SKAction.waitForDuration(2)) {
    self.addChild(self.myLabel)
}

注意:这里我假设self是一个场景或已经添加到场景中的其他节点。

您可以在需要的地方声明此函数

public func delay(delay:Double, closure:()->()) {
    dispatch_after(
        dispatch_time(
           DISPATCH_TIME_NOW,
           Int64(delay * Double(NSEC_PER_SEC))
        ),
        dispatch_get_main_queue(), closure)
 }
并用作:

   delay(2.0) {
      self.addChild(self.myLabel)
   }

第二个可行,但我必须更改一些内容(由xcode指示)。结果是:
self.runAction(SKAction.waitForDuration(2.0),完成:{self.addChild(self.myLabel)})
欢迎您!在Xcode中测试后,我编辑了我的答案。如果答案对你有帮助,请考虑投票和/或接受它:)确保在自己中执行<代码> { [未拥有的自我]。AdgDead(自已.MyLabely})< /Calp>关闭将保持在自身上,因此它不会脱离。这就是所谓的保留周期,你可以搜索更多关于这件事的信息。@Whirlwind抱歉,我忘了。