2016-08-16 2 views
1

Ich versuche einfach eine Funktion nach 3 Sekunden in swift 2 auszuführen. Ich habe zahlreiche Dinge ausprobiert und keine funktionieren. Es ist ein Sprite-Kit Spiel in swift 2, sagen Pleas mir, wie dies zu tun ..Swift 2 Ausführen der Funktion nach 3 Sekunden

Aufruf der Funktion sieht nun wie folgt self.adjustScore()

EDIT wie diese gelöst, dank Googe Seite 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

Sie Benutzer –

+0

Verwenden Perform Selector 'NSTimer' können stattdessen zu erreichen. – Khundragpan

+0

Bearbeiten Sie Ihre Frage nicht, um die richtige Antwort anzuzeigen. Sie sollten stattdessen Ihre eigene Frage beantworten. – penatheboss

Antwort

2

Try this:

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

Normalerweise würde ich die oben genannten Antworten downvote, aber die OP hat nicht spezifiziert, dass es SpriteKit im Fragetitel ist. In SpriteKit möchten Sie nicht NSTimers verwenden oder Timer senden, da Sie diese Timer nicht pausieren, wenn Sie die Szene pausieren. Verwenden Sie stattdessen eine Kombination aus SKAction.waitForDuration und SKAction.runBlock der gewünschten Wirkung

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

Dies ist der korrekte Code, wenn Sie SpriteKit –

+0

Upvote für den richtigen SpriteKit Weg verwenden. – crashoverride777