setTimeout – Ausführung einer Funktion nach festgelegter Zeit

Über setTimeout() kann eine Funktion nach einer voreingestellten Zeit ausgeführt werden. Dies ist im Vergleich zu setInterval() eine einmalige Aktion. Trotzdem wird dies in der Programmierung allgemein und in der Spieleprogrammierung benötigt. Aber erst einmal zum grundsätzlichen Aufbau des JavaScript-Befehls:

Der Aufbau der Funktion setTimeout()

setTimeout(Funktionsaufruf, ZeitpunktInMillisekunden)

Wir rufen mit der Funktion setTimeout() eine von uns bestimmte andere Funktion nach einem von uns vergebenen Zeitablauf auf.

Dieser Funktionsaufruf kann auch als anonyme Funktion gestaltet sein – was das genau ist, wird später gezeigt – erst ist das Verständnis und Ablauf von setTimeout() wichtig.

Die Angabe der Zeit erfolgt in Millisekunden. Dabei entspricht 1 Sekunden 1000 Millisekunden. Wollen wir also, dass etwas nach 1 ½ Sekunden gestartet wird, geben wir hier 1500 an.

let anzeigeTastaturshortcuts 
       = setTimeout (TastaturshortcutsEinblenden, 1500);
function TastaturshortcutsEinblenden () {
    document.getElementById("tastaturshortcuts").innerHTML = "Anleitung");
}

Bei der Programmierung eines Spieles könnte man zum Beispiel automatisch nach einer bestimmten Zeit, in der ein Spieler am Anfang untätig ist einfach die Spielanleitung einblenden.

Auch hier kann man eine anonyme Funktion nutzen. Anstelle des aufrufenden Funktionsnamens wird gleich die Funktion innerhalb des setTimeout-Aufrufs integriert.

Uns Beispielcode von oben sieht dann wie folgt aus:

let anzeigeTastaturshortcuts = setTimeout (
    TastaturshortcutsEinblenden, 
    1500
) ;
function TastaturshortcutsEinblenden () {
    document.getElementById("tastaturshortcuts").innerHTML = "Anleitung");
}

Und jetzt das Zusammenpacken beider Bereiche in einen Bereich:

let anzeigeTastaturshortcuts = setTimeout (
   function () {
     document.getElementById("tastaturshortcuts").innerHTML = "Anleitung");
   }, 
   1500
) ;

Hier ist nun um so wichtiger, dass man den Aufruf auch im Vorfeld wieder abschalten kann, falls er nicht benötigt wird. In unserem obigen Beispiel brauchen wir keine Einblendung der Shortcuts, wenn der Spieler einfach anfängt zu spielen. Denn dann kennt er offensichtlich bereits sich im Spiel aus und benötigt keine Shortcuts.

clearTimeout – gesetzte Aktion vorab unterbinden

Wir können auch eine geplante Ausführung eines setTimeout() wieder löschen. Dies geschieht über clearTimeout(). Uns obiges Beispiel würde z.B. nach dem ersten nutzen der Tastatur durch den Spieler dann folgende Zeilen ausführen:

clearTimeout(anzeigeTastaturshortcuts);
weitere eigene Projekte: