Ich versuche, einen einfachen Countdown-Timer zu erstellen, so dass wenn ein Spieler mein Spiel betritt der Timer von 60 bis 0 beginnt. Es scheint einfach, aber ich bin verwirrt, wie ich dies schreibe.(NSTimer) Erstellen eines Timer-Countdowns
Bisher habe ich eine Methode in meinem GameController.m geschaffen, die wie folgt aussieht:
-(int)countDownTimer:(NSTimer *)timer {
[NSTimer scheduledTimerWithTimeInterval:-1
invocation:NULL
repeats:YES];
reduceCountdown = -1;
int countdown = [[timer userInfo] reduceCountdown];
if (countdown <= 0) {
[timer invalidate];
}
return time;
}
Zu Beginn des Spiels ich die ganze Zahl Zeit bei 60 initialisieren Das Etikett dann innerhalb von Viewcontroller festgelegt wird . Aber in dem Moment, in dem ich den Code kompiliere, zeigt er nur die Markierung bei 60 und dekrementiert überhaupt nicht.
Jede Hilfe würde sehr geschätzt werden - ich bin neu in Objective-C.
EDIT
Mit etwas Hilfe von ich jetzt den Code in 2 separate Verfahren getrennt haben. Der Code sieht nun wie folgt aus:
-(void)countDown:(NSTimer *)timer {
if (--time == 0) {
[timer invalidate];
NSLog(@"It's working!!!");
}
}
-(void)countDownTimer:(NSTimer *)timer {
NSLog(@"Hello");
[NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(countDown:)
userInfo:nil
repeats:YES];
}
JEDOCH, wird der Code immer noch nicht ordnungsgemäß ausgeführt und wenn ich die Methode aufrufen [Spiel countDownTimer] von meinem View Controller bricht den Worten: „Unbekannter Selektor an Instanz gesendet“ . Kann mir jemand erklären, was hier falsch ist?
würde es nicht noch einmal schießen, als er auf diese Weise will? Ich denke, es sollte "--remainingCounts == 0", nein? –
@ Daij-Djan Sie haben recht, es sollte entweder 'restorescounts = 59' oder' --remainingCounts' sein. Vielen Dank! – dasblinkenlight
Vielen Dank für Ihr Feedback dasblinkenlight. Aber immer noch kämpfen, um es zum Laufen zu bringen! Momentan kommuniziert mein Selektor nicht mit der countDown-Methode, d. H. Wenn ich den Code kompiliere, passiert nichts. Könnte das sein, weil der Timer nicht gestartet wurde oder dass sie nicht verbunden sind? –