(NSTimer) erstellen Sie ein Timer-Countdown
Ich bin versucht, zu erstellen eine einfache Countdown-Timer, so dass, wenn ein Spieler in mein Spiel, der timer beginnt, von 60 runter auf 0. Es scheint einfach, aber ich bin immer verwirrt, wie ich dieses Schreibe.
Bisher habe ich eine Methode in meinem GameController.m, der 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;
}
Beim start des Spiels, die ich initialisiert die integer-Zeit bei 60. Das label wird dann festgelegt wird, innerhalb ViewController. Aber in dem moment, wenn ich den code kompilieren, es zeigt nur das Etikett bei 60 und nicht Dekrement überhaupt.
Jede Hilfe wäre sehr geschätzt - ich bin neu in Objective-C.
BEARBEITEN
Mit etwas Hilfe habe ich jetzt getrennt, den code in 2 getrennten Methoden. 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, der code immer noch nicht richtig läuft und wenn ich rufen Sie die Methode [Spiel countDownTimer] aus meiner Sicht-Controller bricht es zu sagen: "unrecognized selector geschickt Instanz". Kann jemand erklären, was ist hier falsch?
InformationsquelleAutor Matthew Nieuwenhuys | 2013-03-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mehrere Dinge falsch mit Ihrem code:
NULL
Sollten Sie rufen Sie die überladung, die nimmt einen Selektor, und pass
1
für das Intervall, anstatt-1
.Erklären
NSTimer *timer
undint remainingCounts
ist, dann fügen Siedem Ort, wo Sie wollen, um den countdown zu starten. Dann fügen Sie die countDown-Methode selbst:
--remainingCounts == 0
keine?Sie haben Recht, es sollte entweder
remainingCounts = 59
oder--remainingCounts
. Danke!Vielen Dank für Ihr feedback dasblinkenlight. Aber noch immer schwer zu bekommen, es läuft!!! Im moment ist mein Selektor nicht die Kommunikation mit der countDown-Methode, d.h. nichts passiert, wenn ich den code kompilieren. Dies könnte sein, weil der timer nicht gestartet wurde oder dass Sie nicht miteinander verknüpft sind?
Dies könnte necause der aus Gründen, die Sie erwähnen. Stellen Sie sicher, dass timer ist eine Instanz-variable, dass der Aufruf der geplanten timer mit Intervall passiert (add NSLog) und countDown auf der gleichen Klasse wie der Ruf, stellt den timer. Hinzufügen NSLog als notwendig, um zu sehen, was aufgerufen wird.
Dank dasblinkedlight, dies kann eine dumme Frage sein, aber ich brauche auf Einleitung des Countdown-Timers aus meiner Sicht-controller.m - bisher habe ich [Spiel Countdown-Timers]; - was brauche ich, um fügen Sie zum starten des Countdown-Timers aus meiner Sicht-controller?
InformationsquelleAutor dasblinkenlight
Versuchen, diese
Ich machte Theke eine Eigenschaft und mit auto synthetisiert die Eigenschaften Xcode verwendet einen Unterstrich.
es sagt immer 'Verwendung von nicht deklarierter Bezeichner' _counter, wie kann ich dieses Problem lösen?
füge dies in deine header-Datei: @property (nonatomic) NSInteger counter;
InformationsquelleAutor bbarnhart
Aus der Frage, die Sie stellte.Sie können erreichen, dass durch aufrufen einer Funktion für alle 1 Sek und Griff der Dekrement-Logik.
Snippet:-
Sie können Countdown-Timers die Methode selbst, statt onTick sorry, Sie zu verwirren, indem Sie das schreiben andere Methode name.
InformationsquelleAutor Tirupathi Raju