Swift temps en millisecondes

Je veux changer la minuterie à chaque milliseconde, mais il ne fonctionne pas comme prévu.

NSTimer.scheduledTimerWithTimeInterval(0.001, target: self, selector: Selector("advanceTimer:"), userInfo: nil, repeats: true);

func advanceTimer(timer: NSTimer){

    self.time += 0.001;

    let milliseconds = self.time * 100;
    let remaingMilliseconds = Int((milliseconds % 1000) / 10);
    let seconds = Int((milliseconds / 1000) % 60)

    let strSeconds = String(format: "%02d", seconds)
    let strFraction = String(format: "%02d", remaingMilliseconds)

    timerText.text = "\(strSeconds):\(strFraction)";

 }

Le résultat est

La minuterie changement jusqu'à 100 dans l'ordre de la milliseconde partie (00:100) et ensuite modifier à 01:00 = 40 secondes

Duncan approche:

var time: NSTimeInterval = 0;
var startTime: NSTimeInterval = 0;

//And your  timer method...
func advanceTimer(timer: NSTimer){
    //Total time since timer started, in seconds
    self.time = NSDate.timeIntervalSinceReferenceDate() - startTime
    println(self.time);
    //The rest of your code goes here
}

override func didMoveToView(view: SKView) {

    //Set anchor point
    self.anchorPoint = CGPointMake(0.5, 0.5);


    var startTime: NSTimeInterval
    //Sart the timer
    startTime = NSDate.timeIntervalSinceReferenceDate()
    NSTimer.scheduledTimerWithTimeInterval(0.02,
            target: self,
            selector: Selector("advanceTimer:"),
            userInfo: nil,
            repeats: true)
}

Résultat: 456680125.54539 la première impression

  • Le code semble bon, alors le problème doit être dans votre expectactions. Qu'attendez-vous le code pour le faire? Je suppose que la minuterie se développe plus lentement que vous attendez?
  • La résolution de NSTimer est limitée à 50 à 100 millisecondes. Comparer par exemple les stackoverflow.com/questions/30945310/.... – Votre description du problème "il ne fonctionne pas comme prévu" n'est pas utile à tous.
  • Regarde dans CADisplayLink si vous avez seulement besoin de faire des mises à jour de l'INTERFACE utilisateur en raison de la minuterie de cuisson.
  • Une inqualifiable "Ça ne marche pas" est probablement moins mon préféré chose à lire dans une SORTE de question. Il est difficile d'obtenir le MOINS utile que ça.
  • J'ai modifier la question
  • Votre temps de calculs semblent être mauvais (pourquoi multiplier par 100??). Vous devriez vérifier quelques exemples avec un "papier et crayon" de calcul. Notez également que vous avez besoin de trois chiffres après la virgule à afficher les millisecondes.
  • stackoverflow.com/a/30653322/2303865
  • Dans votre "Duncan" approche de code, vous disposez de 2 variables startTime, l'un à portée mondiale et une à l'intérieur de votre didMoveToView() fonction. C'est faux. se débarrasser de la variable locale startTime à l'intérieur de didMoveToView().

InformationsquelleAutor grape1 | 2015-06-22