[id] = SetTimeout(id, func, timeout[, userdata])
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:
Timeout
gesetzt. Dieses Feld ist eine Zeichenkette!
ID:
UserData:
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.
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 ForeverDer obige Code installiert eine Timeout-Funktion, die nach 10000 Millisekunden aufgerufen wird (= 10 Sekunden).