Eine HTML-Seite besteht aus Elementen wir z.B. einen Absatz <p> oder eine Überschrift <h1> .
Es hatte sich nicht bewährt den Elementen einzeln Formatierungen zuzuordnen, weswegen die Formatierungen in Cascading Style Sheets (CSS) ausgelagert wurden und man sich im Wesentlichen nur noch auf die Elemente <div> und <span> beschränkt (mehr).
HTML 5 erweitert HTML um das Element <canvas> (Leinwand), das Grafik-Objekte darstellen kann.
Wird eine HTML-Seite als Textseite mit der Kennung html abgespeichert, kann sie von einem Browser dargestellt werden.
Weil in JavaScript im Gegensatz zu Java die Verwendung von Klassen zur objektorientierten Programmierung nicht zwingend notwendig ist, werden im Folgenden alle Möglichkeiten für die JavaScript-Programmierung dargestellt.
Tutorials im Internet
Ball als Objekt im Mozilla Developer Network
Self-HTML-Wiki bietet für Animationen neben der Standardlösung auch eine optimierte Lösung an
Das Mozilla Developer Network bietet ein Tutorial zum Programmieren des Spiels Breakout mit HTML 5 an (Tutorial zu Breakout).
HTML-Element Canvas mit Breite und Höhe und mit CSS für Rahmendickke, Rahmenart und Hintergrundfarbe
Mit JavaScript wird durch die Methode getElementById() in einer Variablen das HTML-Element Zeichenfläche (canvas) als JavaScript-Objekt mit 2-dimensionalen Zeichenmethoden für Zeichenobjekte (getContext("2d"))abgespeichert (W3Schools)
Das Zeichenobjekt Kreis wird in der Canvas mit JavaScript durch die Methode arc() für einen Kreisbogen gezeichnet.(W3Schhols)
Für die Bewegung des Balles wird er nacheinander gezeichnet,
Um die Anweisungen für das Zeichnen an verschiedenen Orten immer wieder ausführen zu können, werden diese zu einer Funktion zusammengefasst, die durch die Methode requestAnimationFrame()in einem Fenster des Betriebssystems in dem der Browser ausgeführt wird, immer wieder aufgerufen wird.
Die neuen Positionen des Balls werden durch Multiplikation einer Geschwindigkeit mit der Zeit, die um dt hochgezählt wird, von requestAnimationFrame in einer Schleife berechnet.
Dabei muss die alte Position jeweils mit Hilfe eines Rechtecks von der Größe der Leinwand gelöscht werden.
Die wiederholte Funktion muss auch selbst ausgeführt werden, entweder durch das Ereignis onload beim Laden des body der HTML-Datei oder durch Aufruf (Im Beispiel nur als Kommentar vermerkt.) der Funktion im body.
Variable in JavaScript müssen nicht typisiert und deklariert werden.
Der Typ wird automatisch zugewiesen, z.B. beim Multiplizieren zweier Variablen der Typ Zahl. Beim Addieren ist der Typ allerdings nicht eindeutig, auch Zeichen können addiert (aneinander gehängt) werden. Da zunächst Variablen als Zeichenketten verwendet werden, können sie durch die Methoden parseInt() bzw, parseFloat() in Zahlen verwandelt werden.
Die Deklarierung von Variablen kann durch 'use strict' aufgezwungen werden.
Variablen die außerhalb von Methoden deklariert wurden, gelten auch in den Methoden, müssen also nicht übergeben werden.
Einfache Bewegung in x-Richtung
Einfache Bewegung in x- und y-Richtung
Durch Entfernen des Kommentars am Ende des Scripts kann das Programm auch ohne den Parameter onload im Element Body über den Funktionsnamen aufgerufen werden.
Es hat sich in der Informatik als günstig erwiesen, Werte von Variablen zusammen mit dazugehörigen Methoden als Objekt zu speichern.
Durch eine Constructor-Funktion können mit dem Operator new mehrere gleichartige Objekte gebildet werden.
JavaScript kennt eigentlich keine Klassen, sondern nur Prototypen von Objekten.
Um auch in JavaScript objektorientierte Programmierung mit Klassen (OOP) zu ermöglichen, wurden Klassen (W3Schools) als Option formal eingeführt.
Auch bei einer Klasse werden in einer Konstruktor-Methode die Attribute deklariert (zwingend nötig innerhalb einer Klasse) und initialisiert Durch this können die lokalen Variablen des Konstruktor auch in anderen Methoden der Klasse verwendet werden (lokale Variablen sind ohne this).
Will man die Bewegung als Methode der Klasse Ball programmieren, muss diese static sein, da die JavaScript-Methode requestAnimationFrame() nur mit konkreten Objekten und nicht mit this arbeiten kann. Ansonsten kann die Bewegung auch außerhalb der Klasse Ball als JavaScript-Methode programmiert werden.
Damit die in Funktionen zusammengefassten Anweisungen ausgeführt werden, müssen die Funktionen entweder im body mit ihrem Namen oder als Parameter des HTML-Elements body aufgerufen werden.
Man kann in JavaScript aber auch mit einer Methode einen EventListener starten.
Die JavaScript-Methode requestAnimationFrame hat das Problem, dass wenn sie nicht gestoppt wird, sie bei den nächsten Aufrufen immer schneller abläuft.