• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Restzeitanzeige mittels Timer "updaten"

hihatzz

Geomaster
Hallo,
ich habe einen WIG (Rund um den Rinsen) bei dem man einen See innerhalb einer vorbestimmten Zeit umrunden muss.
Dazu setzte ich zu Rennbeginn mittels os.time() die startZeit. Die endZeit ist die startZeit plus die Sekunden die man Zeit hat die Runde zu schaffen.
Im Inventory gibt es eine Uhr mit einem Befehl "Restzeit anzeigen", dabei wird eine Funktion 'displayRestSecs' aufgerufen in der die aktuelle Zeit mit os.time eingelesen wird und diese von der Endzeit abgezogen wird.
In der Messagebox bleibt der Wert beim klicken auf "Restzeit anzeigen" fest stehen.
Ich möchte nun dass die Zeit dynamisch (im Sekundentakt) mit runtergezählt wird.
Dazu hab ich einen Timer timeDisplay als Interval mit 1 sec. definiert.
Läuft der Timer ab ('on elapse') wird einfach die Funktion 'displayRestSecs' aufgerufen.
Klickt man auf OK ('On clicked') in der Funktion wird der Timer gestoppt.

Das Problem ist auf der Simu funktioniert alles perfekt.
Auf dem Oregon funktioniert die Sache fast perfekt, nur ab und zu wird der Klick auf den OK-Knopf nicht erkannt, dann muss man halt ein zweites mal draufklicken.
Das Problem ist unter Android, sie Seite wird wohl immer komplett aufgebaut, d.h. beim Android wird die Seite wegen der Animation jedesmal von rechts "reingeschoben".
Ich hoffe das ist verständlich geschrieben.
Gibt es irgendwie die Möglichkeit nur gezielt den Wert der Restsekunden zu ändern oder habt ihr einen anderen Lösungsvorschlag.

Zur Verdeutlichung hab ich mal ein Beispielcartridge inkl. Urwigo-File angehängt.
Danke schonmal für eure Hilfe.
 

Anhänge

  • Restzeit.zip
    292,6 KB · Aufrufe: 29

bodenseepingu

Geomaster
Ich hab die ein- oder andere Cartridge mit einem Tipp von tower27 gemacht,
einfach einen Timer (z.B. 10 sec) - einen Zeitzähler runterzählen - und den Namen eines Items auf den Zeitzähler setzen - das erfüllt seinen Zweck..

Gruss
 

maierkurt

Geowizard
Das "On Click" Ereignis funktioniert nicht auf allen Geräten.

Ob die Abfrage der Systemzeit so gut ist? Ich wäre der erste im Feld, der die Uhrzeit zurückstellen würde.
Ein Timer mit z.B. 10 Sekunden-Intervall wäre da besser. Jedesmal dann eine Variable um eins hochzählen.

Gruß, maierkurt
 
OP
hihatzz

hihatzz

Geomaster
Danke für den Tipp, ich habe jetzt mittels des Timers (Interval), den ich auf 1sec. gestellt habe, den Item.Name geändert.
Jetzt ist es auf Android perfekt, die Zeit wird sogar in der Übersicht (Zonen, Charaktere, Item, Task) upgedated.
Auf Oregon wird die Anzeige nur upgedated wenn man in einen anderen Screen wechselt und dann wieder zurück.

@maierkurt: das "on Click" Ereignis wird nirgendwo verwendet.
Ich denke nicht dass du die Möglichkeit hast die Systemzeit zu ändern da sie aus der GPS Zeit gelesen wird (Ich habe auch auf Oregon noch nirgendwo die Möglichkeit gesehen wo man die einstellen kann). Wie hier (Link) von mir getestet läuft die Zeit dann ohne GPS Empfang weiter.

Mit einem "normalen" Timer hättest du die Möglichkeit das Gerät auszuschalten (auf Android evtl. nur stand-by), zur nächsten Zone gemütlich zu laufen und das Gerät wieder anzuschalten,
mit der (GPS)Systemzeit ist das nicht möglich.
 

Krolock

Geocacher
Warum macht ihr das so kompliziert mit Funktion und dem math.floor.
Wie ihr im folgenden Bild sowie im Urwigo Projekt sehen könnt, geht es auch mit einem einfachen Runterzählen einer Variablen.
CountdownKrolock.PNG
Mit dem Oregon klappst wunderbar. Mit iPhone und Android hab ich's noch nicht getestet
 

Anhänge

  • TimerAnzeigeKrolock.rar
    1,4 KB · Aufrufe: 20

t31

Geowizard
DIe Frage ist, ist eine Sekunde wirlich eine Sekunde (lang) und vorallem ist diese Sekunde auf allen Geräten gleichlang, schießlich wird j noch Programmcode abgearbeitet und je nach System ist der nicht identisch. Da ist die System Zeit schon genauer, wenngleich manipulierbar.
 

Krolock

Geocacher
t31 schrieb:
DIe Frage ist, ist eine Sekunde wirlich eine Sekunde (lang) und vorallem ist diese Sekunde auf allen Geräten gleichlang, schießlich wird j noch Programmcode abgearbeitet und je nach System ist der nicht identisch. Da ist die System Zeit schon genauer, wenngleich manipulierbar.

Da könnte was dran sein. Ich denk aber, dass wir hier von Abweichungen im Millisekundenbereich reden. Es wird hier lediglich eine MessageBox angezeigt, sowie ein größer-Vergleich und eine Zuordnung mit Addition ausgeführt.
Ich kann mir nicht vorstellen, dass die Abweichungen die 1% Marke übersteigen, was für die meisten Anwendungsfällen genau genug ist.
 

jonny65

Geomaster
Ist zu vernachlässigen...zumindest beim Oregon und der ist ja wirklich nicht der schnellste unter den WIG Playern. Man kanns einfach testen, indem man den Countdown mal auf 100 setzt, Stopuhr mitlaufen lässt dann bei Ablauf vergleicht.
 

Krolock

Geocacher
Ich hab ne Abfrage der Systemzeit vor dem Start und nach dem Ende des Timers eingebaut. Unabhänig von der Countdownzeit lieferte das Ergebnis n+1, also die eingestellte Countdownzeit plus eins.
Da dies die Zeit ist bis der Timer das erste Mal startet, ist das Zeitverlust zu vernachlässigen.
 
Oben