Bezeichnung
SetTimeout -- installiert eine neue Timeout-Funktion (V2.0)
Übersicht
[id] = SetTimeout(id, func, timeout[, userdata])
Beschreibung
Dieser Befehl installiert eine neue Timeout-Funktion und ordnet ihr die ID zu. Wenn Sie Nil als id angeben, wird SetTimeout() automatisch eine ID erhalten und zurückgeben. Sie müssen eine Funktion dem Argument func und die Zeit in Millisekunden in timeout angegeben. Nach Ablauf dieser Zeit wird Hollywood Ihre Timeout-Funktion aufrufen. Dies ist nützlich, wenn Sie genaue Zeitpunkte benötigen, zum Beispiel wenn Sie Grafiken mit Musik synchronisieren möchten. Timeout-Funktionen sind dafür perfekt.

Sie müssen immer WaitEvent() in Verbindung mit diesem Befehl verwenden! Wenn Sie eine Timeout-Funktion installiert haben, wird der interne Hollywood-Timer-Scheduler Timeout-Ereignisse auslösen und WaitEvent() informieren, Ihre Timeout-Funktion aufzurufen. Timeouts funktionieren nicht ohne WaitEvent()! Wenn Sie WaitEvent() nicht verwenden, wird Ihre Timeout-Funktion nie aufgerufen werden. Timeout-Funktionen werden nur so lange aufgerufen, wie Sie in einer WaitEvent()-Schleife sind.

Sie können so viele Timeouts installieren, wie Sie möchten. Hollywoods interner Scheduler wird sicherstellen, dass alle Timeout-Funktionen korrekt aufgerufen werden.

Sie können ClearTimeout() verwenden, um eine Timeout-Funktion zu stoppen.

Ab Hollywood 3.1 gibt es das optionales Argument userdata. Der Wert, den Sie hier angeben, wird der Callback-Funktion übergeben. Dies ist nützlich, wenn Sie die Arbeit mit globalen Variablen vermeiden möchten. Mit Hilfe des Arguments userdata können Sie ganz einfach Daten an Ihre Callback-Funktion übergeben. Sie können einen Wert eines beliebigen Typs wie Zahlen, Zeichenketten, Tabellen und Funktionen angeben.

Ihre Timeout-Funktion wird von Hollywood mit einem Parameter aufgerufen werden. Dieser Parameter ist eine Nachrichtentabelle, die folgende Felder enthält:

Action:
Wird immer auf Timeout gesetzt. Dieses Feld ist eine Zeichenkette!

ID:
Identifikator der Timeout-Funktion.

UserData:
Wird auf den Inhalt von userdata gesetzt, die Sie im Argument userdata angegeben haben, als Sie die Timeout-Funktion installiert haben.

Diese Meldung ist nützlich, wenn Sie zwei oder mehr Intervalle in der gleichen Funktion handhaben wollen. Die Meldung sagt Ihnen dann, welches Intervall Hollywood ausführt. Wenn Sie diese Nachricht nicht brauchen, einfach ignorieren.

Eingaben
id
Identifikator für die neue Timeout-Funktion oder Nil für automatisches Auswählen der ID. Die ID ist erforderlich, so dass Sie später diese Timeout-Funktion mit ClearTimeout() entfernen können
func
Funktion, welche aufgerufen wird, nachdem die angegebene Zeit verstrichen ist
ms
Die Dauer in Millisekunden, bis die Timeout-Funktion aufgerufen wird.
userdata
optional: Benutzerdefinierte Daten, welche der Callback-Funktion übergeben werden (V3.1)
Rückgabewerte
id
optional: Identifikator des Timeouts; wird nur zurückgegeben, wenn bei Argument 1 Nil angegeben wurde (siehe oben)
Beispiel
Function p_TenSeconds()
  SystemRequest("Hollywood", "Ten seconds are over now!", "OK")
EndFunction

SystemRequest("Hollywood", "I will call the function TenSeconds()\n" ..
   "after 10 seconds have elapsed!\nCheck your watch, then click Go!",
   "Let's go!")

SetTimeout(1, p_TenSeconds, 10000)

Repeat
  WaitEvent
Forever
Der obige Code installiert eine Timeout-Funktion, die nach 10000 Millisekunden aufgerufen wird (= 10 Sekunden).

Navigation zeigen