Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Da wir JavaScript verwenden, um <canvas>-Elemente zu steuern, ist es auch sehr einfach, (interaktive) Animationen zu erstellen. In diesem Kapitel werden wir uns ansehen, wie man einige grundlegende Animationen erstellt.
Wahrscheinlich die größte Einschränkung ist, dass eine Form, sobald sie gezeichnet wurde, so bleibt. Wenn wir sie bewegen müssen, müssen wir sie und alles, was vorher gezeichnet wurde, neu zeichnen. Es dauert viel Zeit, komplexe Rahmen neu zu zeichnen, und die Leistung hängt stark von der Geschwindigkeit des Computers ab, auf dem es läuft.
Dies sind die Schritte, die Sie unternehmen müssen, um einen Rahmen zu zeichnen:
Formen werden auf der Leinwand entweder direkt durch die Methoden des Canvas gezeichnet oder durch das Aufrufen benutzerdefinierter Funktionen. Unter normalen Umständen sehen wir diese Ergebnisse erst dann auf der Leinwand erscheinen, wenn das Skript die Ausführung abgeschlossen hat. Beispielsweise ist es nicht möglich, eine Animation aus einer for-Schleife heraus zu machen.
Das bedeutet, dass wir eine Möglichkeit brauchen, unsere Zeichenfunktionen über einen bestimmten Zeitraum hinweg auszuführen. Es gibt zwei Möglichkeiten, eine Animation auf diese Weise zu steuern.
Zunächst gibt es die Funktionen setInterval(), setTimeout() und requestAnimationFrame(), die verwendet werden können, um eine bestimmte Funktion über einen festgelegten Zeitraum hinweg aufzurufen.
setInterval()Beginnt mit der wiederholten Ausführung der durch function angegebenen Funktion alle delay Millisekunden.
setTimeout()Führt die durch function angegebene Funktion nach delay Millisekunden aus.
requestAnimationFrame()Teilt dem Browser mit, dass Sie eine Animation durchführen möchten, und fordert den Browser auf, eine angegebene Funktion aufzurufen, um eine Animation vor dem nächsten Neulackieren zu aktualisieren.
Wenn Sie keine Benutzerinteraktion wünschen, können Sie die setInterval()-Funktion verwenden, die den bereitgestellten Code wiederholt ausführt. Wenn wir ein Spiel herstellen wollten, könnten wir Tastatur- oder Mausereignisse verwenden, um die Animation zu steuern und setTimeout() nutzen. Durch das Setzen von Listenern mit addEventListener() fangen wir jede Benutzerinteraktion ab und führen unsere Animationsfunktionen aus.
Hinweis: In den folgenden Beispielen verwenden wir die Methode Window.requestAnimationFrame(), um die Animation zu steuern. Die requestAnimationFrame-Methode bietet eine flüssigere und effizientere Möglichkeit zur Animation, indem der Animationsrahmen aufgerufen wird, wenn das System bereit ist, den Rahmen zu zeichnen. Die Anzahl der Rückrufe beträgt normalerweise 60 Mal pro Sekunde und kann auf eine niedrigere Rate reduziert werden, wenn sie in Hintergrundtabs ausgeführt wird. Für weitere Informationen über die Animationsschleife, insbesondere für Spiele, lesen Sie den Artikel Anatomy of a video game in unserer Spiele-Entwicklungszone.
Dieses Beispiel animiert ein kleines Modell unseres Sonnensystems.
Dieses Beispiel zeichnet eine animierte Uhr, die Ihre aktuelle Uhrzeit anzeigt.
Hinweis: Obwohl die Uhr nur einmal pro Sekunde aktualisiert wird, wird das animierte Bild mit 60 Frames pro Sekunde (oder mit der Bildwiederholfrequenz Ihres Webbrowsers) aktualisiert. Um die Uhr mit einem schleichenden Sekundenzeiger anzuzeigen, ersetzen Sie die Definition von const sec oben durch die auskommentierte Version.
In diesem Beispiel wird ein Panorama von links nach rechts gescrollt. Wir verwenden ein Bild des Yosemite Nationalparks, das wir von Wikipedia genommen haben, aber Sie könnten jedes Bild verwenden, das größer als die Leinwand ist.
Das HTML enthält das <canvas>, in dem das Bild gescrollt wird. Beachten Sie, dass die hier angegebene Breite und Höhe den Werten der Variablen canvasXSize und canvasYSize im JavaScript-Code entsprechen müssen.
Im nächsten Kapitel werden wir uns einige fortgeschrittene Animationstechniken und Physik ansehen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.