Re: system.timer() Überlauf Kategorie: Programmierung (von Detlef - 28.08.2012 8:28) | ||
Als Antwort auf Re: system.timer() Überlauf von AndrĂ© H. - 2.08.2012 16:13 | ||
| ||
> Hallo Detlef, > > > wie ist das mit dem Timerüberlauf genau: > > Ich habe gelernt, wenn ich von system.timer() eine Long Variable abziehe, ist das Ergebnis immer > > korrekt, egal ob Timerüberlauf. > > timer = system.timer(); > > ... > > if system.timer()-timer >=500 > > ... > > Korrekt. > > > > Wie verhält es sich denn, wenn ich in diesem Spiel noch einen Offset addiere? > > > > timer = system.timer()+30000; > > ... > > if timer - system.timer() <=0 > > ... > > > > Funktioniert das? Was ist mit dem Fall, da� system.timer() zusammen mit dem Offset einen �berlauf > > produziert? Was steht dann in timer, wie läuft dann der anschlie�ende Vergleich? > > Das wird nicht immer Funktionieren, da das Ergebnis für bis zu 30sek. nicht stimmen kann. > Wichtig ist bei der Timer-Berechnung mit �berläufen immer, da� binär gesehen > vom grö�eren Wert immer der kleinere abgezogen wird. Also ohne beachtung des Vorzeichens. > > > > Ich verwende das, weil ich in einem Thread mehrere verkette Abläufe nach gleichem Schema aber mit > > unabhängig getriggerten Schrittfolgen abhandele. Dieser Thread muckt nach 14 Tagen - 2 Monaten > > immer rum. Alternativ: Wie setze ich system.timer() zyklisch zurück? (Resettaste drücken ist die > > heutige Lösung!) > > Den Timer kann man nicht zurücksetzen. Zumindest nicht direkt. > Das sollte man auch nicht, da am Timer noch andere Dinge hängen. > > Aber warum benutzt Du nicht für den Offset eine Variable? > > Wenn Du nach Ablauf einer Zeit etwas auslösen willst, reicht folgendes: > long Offset; > ... > Offset=30000; > timer=system.timer(); > ... > ... > if system.timer() - timer>=Offset { ... } > > > MfG André H. Danke André, es gibt bei mir einen einzigen Thread, der alle in der Steuerung auftretenden verzögerten, bzw. verketteten Abläufe steuert. Dazu gibt es Einträge in einem Array das von vielen Instanzen beschrieben wird, und von diesem Thread dann abgearbeitet wird. Ich werde nicht umhin kommen, zu der Offsetzeit auch noch die zu der Zeit gültige system.timer() Zeit in einem weiteren Feld abzuspeichern. Bislang habe ich halt nur ein Feld mit dem Wert "system.timer()+Offset" belegt. Nun denn. Mal sehen wie es läuft. Momentan kann ich den Fehler nicht nachstellen, da ich jede Woche neue Updates einspiele weil mein Iphone gerade "Haussteuerung" lernt! ;-) Oder kann man system.timer() vorbelegen???? | ||
Antwort schreiben Antworten: |