2016-08-16 85 views
1

我想在swift 2中3秒后简单地执行一个函数。我尝试过很多事情,但都没有工作。这是迅速2精灵套件的比赛,普莱斯告诉我该怎么做..Swift 2在3秒后执行函数

调用函数现在看起来是这样 self.adjustScore()

编辑解决这个样子,使用Googe感谢第4页

 let triggerTime = (Int64(NSEC_PER_SEC) * 1) 
      dispatch_after(dispatch_time(DISPATCH_TIME_NOW, triggerTime), dispatch_get_main_queue(), {() -> Void in 
       self.adjustScore() 
      })   
    }) 
+0

您可以执行用户选择使用 –

+0

'NSTimer'代替。 – Khundragpan

+0

请勿编辑您的问题以显示正确答案;你应该回答你自己的问题。 – penatheboss

回答

2

试试这个:

let time = dispatch_time(DISPATCH_TIME_NOW, Int64(3.0 * Double(NSEC_PER_SEC))) 
dispatch_after(time, dispatch_get_main_queue()) { 
    self.adjustScore() 
} 
4

通常我会downvote上面的答案,但OP没有在问题标题中指定它是SpriteKit。在SpriteKit中,您不想使用NSTimers或调度计时器,因为如果暂停场景,则不会暂停这些计时器。相反,使用的SKAction.waitForDurationSKAction.runBlock的组合来达到预期的效果

self.runAction(SKAction.sequence([SKAction.waitForDuration(3),SKAction.runBlock({[[unowned self] in self.adjustScore()})]) 
+1

这是正确的代码,如果您使用SpriteKit –

+0

Upvote为正确的SpriteKit方式。 – crashoverride777