Bezeichnung
SetInterval -- installiert eine neue Intervallfunktion (V2.0)
Übersicht
[id] = SetInterval(id, func, ms[, userdata])
Beschreibung
Dieser Befehl installiert eine neue Intervallfunktion und weist die ID zu. Wenn Sie Nil als id angeben, wird SetInterval() automatisch eine ID wählen und sie Ihnen übergeben. Sie müssen im Argument func eine Funktion und in ms die Zeit in Millisekunden angeben. Die angegebene Funktion wird dann wieder und wieder und wieder in den Abständen der angegebenen Zeit aufgerufen werden. Wenn Sie zum Beispiel 40 als Intervall angeben, wird Ihre Funktion alle 40 Millisekunden aufgerufen werden, das 25-mal pro Sekunde entspricht (25 * 40 ms = 1000 ms = 1 Sekunde). Das reicht für die meisten Spiele, Intros usw.

Die Funktion, die Sie in func angeben, wird zum ersten Mal aufgerufen werden, wenn die in ms angegebene Zeit verstrichen ist. Danach wird Ihre Funktion wiederholt in Intervallen von ms Millisekunden aufgerufen werden.

Sie müssen immer WaitEvent() in Verbindung mit diesem Befehl verwenden! Wenn eine Intervallfunktion installiert ist, wird der interne Hollywood-Timer Intervall-Ereignisse auslösen und WaitEvent() informieren, dass er Ihre Intervallfunktion aufruft. Intervalle funktionieren nicht ohne WaitEvent()! Wenn Sie WaitEvent() nicht verwenden, wird Ihre Intervallfunktion nie aufgerufen werden. Intervallfunktionen werden nur so lange aufgerufen, wie Sie in einer WaitEvent()-Schleife sind.

Dieser Befehl ist sehr wichtig, weil er Ihnen hilft sicherzustellen, dass Ihr Skript auf jedem System mit der gleichen Geschwindigkeit ausgeführt wird. Siehe Zeitsteuerung des Skripts für weitere Informationen zu diesem Thema und auch für ein Beispiel.

Sie können beliebig viele Intervalle installieren. Hollywoods interner Scheduler wird sicherstellen, dass alle Intervallfunktionen korrekt aufgerufen werden.

Bitte denken Sie daran, dass Hollywood nicht Multithreading unterstützt. Daher dürfen Ihre Intervallfunktionen das Skript nicht blockieren, andernfalls wird das gesamte Skript gesperrt. Zum Beispiel, wenn Sie zwei Intervallfunktionen installiert haben und eine dieser Funktionen führt den Befehl Wait(100) aus, dann wird das gesamte Skript für 2 Sekunden gesperrt.

Sie können den Befehl ClearInterval() aufrufen, um eine Intervallfunktion zu stoppen.

Ab Hollywood 3.1 gibt es das optionale Argument userdata. Der Wert, den Sie hier angeben, wird der Callback-Funktion übergeben, wenn sie aufgerufen wird. Dies ist nützlich, wenn Sie die Arbeit mit globalen Variablen vermeiden möchten. Mit Hilfe von dem Argument 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 Intervallfunktion wird von Hollywood mit einem Parameter aufgerufen werden. Dieser Parameter ist eine Nachrichtentabelle, die folgende Felder enthält:

Action:
Wird immer auf Interval gesetzt. Dieses Feld ist eine Zeichenkette!
ID:
Wird auf die ID des Intervalls festgelegt werden, der Hollywood gerade aufgerufen hat.
UserData:
Wird auf den Inhalt von userdata gesetzt, den Sie im Argument userdata angegeben haben, als Sie die Intervallfunktion 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.

Last but not least: Sie sollten einen Blick in die Beispiele werfen, die mit Hollywood geliefert wurden. Viele von ihnen verwenden SetInterval(), um den Zeitpunkt des Skripts zu verwalten!

Weiterer Intervall-Befehl: ChangeInterval()

Eingaben
id
Identifikator für die neue Intervallfunktion oder Nil fürs automatische Auswählen der ID. Die ID ist erforderlich, so dass Sie später diese Intervallfunktion mit ClearInterval() entfernen können
func
Funktion, welche mit jedem Intervall aufgerufen wird
ms
Intervalle, in denen die Funktion aufgerufen wird. z.B. 40 ruft die Funktion 25 Mal in der Sekunde auf, weil 25 * 40ms = 1000ms = 1 Sekunde
userdata
optional: Benutzerdefinierte Daten, welche der Callback-Funktion übergeben werden (V3.1)
Rückgabewerte
id
optional: Identifikator des Intervalls; wird nur zurückgegeben, wenn bei Argument 1 Nil angegeben wurde (siehe oben)
Beispiel
Siehe Zeitsteuerung des Skripts


Navigation zeigen