2秒后添加addChild

时间:2016-04-03 00:37:31

标签: ios swift sprite-kit

我试图在用户触摸屏幕后2秒内添加儿童游戏(它位于touchesBegan内),但它无法正常工作。我做错了吗?

//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)
)]))

2 个答案:

答案 0 :(得分:6)

问题是,除非在场景中,否则操作不会在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是场景或已经添加到场景中的其他节点。

答案 1 :(得分:-1)

您可以在任何地方声明此功能

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

并使用as:

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