WaitTimer(id[, time, reset]) t = WaitTimer(table[, reset]) (V9.0)
id
angegebene Zeitmesser
für die im Argument time
angegebene Zeit abgelaufen ist. Diese
Zeit muss in Millisekunden angegeben werden. Wenn Sie das Argument
time
weglassen oder auf -1 setzen, wartet WaitTimer()
, bis
der Zeitmesser seinen mit SetTimerElapse()
oder StartTimer() eingestellten Schwellenwert
erreicht hat.
Bevor dieser Befehl zurückkehrt, wird auch der angegebene Zeitmesser
zurückgesetzt, so dass Sie diesen Befehl problemlos in einer
Schleife verwenden können. Sie können dieses Verhalten ändern,
indem Sie das optionale Argument reset
auf False
setzen. In
diesem Fall wird der Zeitmesser nicht zurückgesetzt.
Ab Hollywood 9.0 gibt es eine alternative Möglichkeit, WaitTimer()
zu verwenden. Anstelle der ID eines einzelnen Zeitmessers können
Sie auch eine Tabelle mit mehreren Zeitmesser-Identifikatoren
übergeben. In diesem Fall wartet WaitTimer()
, bis mindestens
einer der Zeitmesser aus der im Argument table
angegebenen
Liste abgelaufen ist. Sobald dies geschieht, gibt WaitTimer()
eine Tabelle an Sie zurück. Diese Tabelle ist eine Liste mit
den Identifikatoren aller abgelaufenen Zeitmesser. Wenn das
Argument reset
True
ist, was auch der Standardwert ist, werden
alle abgelaufenen Zeitmesser von WaitTimer()
zurückgesetzt.
Beachten Sie, dass die Tabelle, die Sie an WaitTimer()
übergeben,
auch leer sein kann. In diesem Fall wartet WaitTimer()
einfach
darauf, dass ein Zeitmesser von allen aktuell laufenden Zeitmesser
abgelaufen ist.
WaitTimer()
kann sehr nützlich sein, um die Ausführung von Schleifen
zu drosseln, damit sie nicht die gesamte CPU-Leistung verbrauchen.
Wenn Sie beispielsweise eine Schleife haben, die ein Sprite vom
linken zum rechten Rand des Displays bewegt, sollten Sie eine
Art Drosselung hinzufügen, da es nicht sinnvoll ist, den Bildschirm
häufiger zu aktualisieren, als der Monitor aktualisiert wird.
Dies ist sehr wichtig. Auch wenn das Skript ohne WaitTimer()
mit
perfekter Geschwindigkeit läuft, sollten Sie nicht vergessen, dass
es schnellere Rechner als Ihren gibt. Die Verwendung von WaitTimer()
in Ihren Schleifen stellt sicher, dass Ihr Programm auf jeder
Plattform mit der gleichen Geschwindigkeit ausgeführt wird.
Siehe Zeitsteuerung des Skripts für Details.
Siehe auch GetTimer(), StartTimer(), StopTimer(), PauseTimer(), ResetTimer(), ResumeTimer(), SetTimerElapse() und TimerElapsed().
WaitTimer()
wird zurückkehren, sobald
ein Zeitmesser aus der Liste abgelaufen ist (siehe oben); wenn
Sie eine leere Tabelle übergeben, werden alle laufenden Zeitmesser
berücksichtigtTrue
was bedeutet,
dass der Zeitmesser zurückgesetzt wird)StartTimer(1) For k = 0 To 640 DisplaySprite(1, k, 0) WaitTimer(1, 40) NextIm obigen Code läuft Sprite 1 von links nach rechts. Mit jedem Aufruf von DisplaySprite() und
WaitTimer()
ist sichergestellt, dass mindestens
40 Millisekunden gewartet wird, bis zum nächsten DisplaySprite().
Daher wird diese Schleife nicht mehr als 25 Mal pro Sekunde
ausgeführt werden, da 40 * 25 = 1000 Millisekunden (1 Sekunde).