2014-09-20 243 views
4

我的游戏应该在60s后停止。但是我的计时器代码没有任何反应。如何使用倒数计时器停止游戏 - iOS [SWIFT] -

var timer = NSTimer() 
var counter:Int = 60 
var labelCounter:SKLabelNode = SKLabelNode() 

这里是我的GameScene类代码:

func startTimer() 
{ 
    timer = NSTimer.scheduledTimerWithTimeInterval(1.0 
     , target: self, selector: Selector("updateTimer:"), userInfo: nil, repeats: true) 
} 

func updateTimer(dt:NSTimer) 
{ 
    counter-- 

    if counter == 0 { 
     timer.invalidate() 
     removeCountDownTimerView() 
    } else{ 
     labelCounter.text = "\(counter)" 
    } 
} 

func removeCountDownTimerView() 
{ 
    scene.view.paused = true 
} 

感谢您的洞察力:-)

+1

你试过暂停现场,而不是观点:'scene.paused = TRUE' – 2014-09-20 15:38:11

回答

5

尝试是这样的....

override func viewDidLoad() { 
    super.viewDidLoad() 
    //calling the wait function 
    self.callForWait() 
} 

func callForWait(){ 
    //setting the delay time 60secs. 
    let delay = 60 * Double(NSEC_PER_SEC) 
    let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 
    dispatch_after(time, dispatch_get_main_queue()) { 
     //call the method which have the steps after delay. 
     self.stepsAfterDelay() 
    } 
} 


func stepsAfterDelay(){ 
    //your code after delay takes place here... 
} 
+0

感谢您的帮助! – Haox 2014-09-21 07:55:10

3

我在一场比赛中有这个。希望它能帮助:

import UIKit 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     startGame() 
    } 

    var startTime = NSTimeInterval() 
    var timer = NSTimer() 
    var gameTime:Double = 10 


    func startGame() { 

     let aSelector : Selector = "updateTime" 
     timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: aSelector, userInfo: nil, repeats: true) 
     startTime = NSDate.timeIntervalSinceReferenceDate() 

    } 

    func updateTime() { 
     var currentTime = NSDate.timeIntervalSinceReferenceDate() 
     var elapsedTime = currentTime - startTime 
     var seconds = gameTime-elapsedTime 
     if seconds > 0 { 
      elapsedTime -= NSTimeInterval(seconds) 
      println("\(Int(seconds))") 
     } else { 
      timer.invalidate() 
     } 
    } 

} 
+0

谢谢您的帮助: ) – Haox 2014-09-21 07:54:12

+0

不错,简单而干净。伟大的代码,谢谢! – kakubei 2015-04-17 09:37:58

+0

美丽!只有一件事史蒂夫,有没有任何目的elapsedTime = = NSTimeInterval(秒)? – 2015-05-20 23:08:26