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?