2012-03-29 15 views
0

Ich versuche, einen Timer zu meinem Spiel hinzufügen, so dass der Benutzer weiß, wie lange sie ein Level gespielt haben. Ive herausgefunden, dass ich einen Timer die folgende Art und Weise initialisieren kann:Erstellen eines Timers für ein Level in iPhone-Spiel

bool showTimer = YES; 
NSDate startDate; 
UILabel timerLabel; // initialized in viewDidLoad 

    -(void) showElapsedTime: (NSTimer *) timer { 
     if (showTimer) { 
      NSTimeInterval timeSinceStart; 

      if(!startDate) { 
       startDate = [NSDate date]; 
      } 

      timeSinceStart = [[NSDate date] timeIntervalSinceDate:startDate]; 
      NSString *intervalString = [NSString stringWithFormat:@"%.0f",timeSinceStart]; 
      timerLabel.text = intervalString; 

      if(stopTimer) {//base case 
       [timer invalidate]; 
      } 
     } 
    } 

    - (void) startPolling { 
     [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(showElapsedTime:) userInfo:nil repeats:YES]; 
    } 

ich die startPolling Methode in der viewDidLoad starten. Wenn ich die App starte, sehe ich den Timer und es verfolgt die Zeit, aber wenn ich die App verlasse und sie erneut betrete, pausiert der Timer nicht. Ich bin mir auch nicht sicher, wie ich mit einer anderen Ansicht umgehen soll (wie das Optionsmenü) und komme dann zu dieser Ansicht zurück. Ich verstehe NSDefaults und NSCoding und ich sehe, wie ich den aktuellen Wert auf dem Timer als Coding-Objekt speichern könnte, ein separates Schlüssel-Wert-Paar in einem Plist für jedes Level zu halten, aber das scheint umständlich.

Gibt es einen besseren Weg, um zu verfolgen, wie lange der Benutzer in einem Level verbringt?

Antwort

1

Anstatt die Berechnung (Subtrahieren der Startzeit von der aktuellen Zeit) jedes Mal, da alles, was Sie interessieren, ist eine verstrichene Zeit, haben Sie einfach eine Variable wie NSTimeInterval elapsedTime, die Sie bei 0 beginnen und hinzufügen Zeit zu jeder Zeit Der Timer wird ausgelöst. (Wenn Sie es wie in Ihrem Beispiel auf 0,1 Sekunden aufspüren möchten, teilen Sie es einfach durch 10, bevor Sie es anzeigen.) Auf diese Weise können Sie es jederzeit anhalten und es wird von dort fortgesetzt, wo es vorher war .

Verwandte Themen