Zunächst wollen wir uns mit einer einfachen Animation beschäftigen. Wir wollen ein Java Applet programmieren, dass einen Kreis (Ball) von der einen Seite des Applets auf die andere bewegt. Dies ist sicherlich noch keine Großtat, aber irgendwie müssen wir ja beginnen.
Zu Beginn müssen wir wieder unsere Applet Grundstruktur implementieren, wobei wir allerdings noch zwei Dinge hinzufügen müssen. Als Erstes muss man, um eine Animation in Java verwirklichen zu können das Interface Runnable implementieren und die dazugehörige Methode run(). Wir müssen unser Applet also folgendermaßen erweitern:
Um nun ein Graphik - Objekt zu bewegen, brauchen wir außerdem einen sogenannten Thread, den wir in der Start - Methode schaffen:
Threads
Ein Thread ist ein eigenständiges Programmfragment, das parallel zu anderen Threads (Multithreading) laufen kann. Threads werden in Java durch die Klasse Thread und das Interface Runnable sowie die dazugehörige Funktion run() implementiert , was wir im obigen Abschnitt ja schon getan haben. Wichtige Funktionen zur Erzeugung eines Threads sind:
Die weiteren Funktionen der Klasse Thread können in der Java - API nachgelesen werden.
public void start ()Diesen Thread lassen wir nun in der Run - Methode laufen. Nach jedem Durchlauf der Run - Methode stoppen wir den Thread für eine gewisse Zeit um ihn dann erneut durchlaufen zu lassen: Die run - Methode sollte also folgendermaßen aussehen:
public void run ()
Wir haben nun eine Endlosschleife, die alle Anweisungen innerhalb des while (true) - Blockes ausführt, 20 Millisekunden wartet um dann die selben Anweisungen erneut auszuführen. Wie aber sollen wir nun einen Kreis, der vom Applet gezeichnet wird bewegen.
Nun, der Kreis hat ja eine x - Koordinate und eine y - Koordinate. Wenn wir nun in jedem Durchlauf des Threads die x - Koordinate um eins erhöhen würden, so würde sich der Ball entlang der x - Achse, bei gleichbleibender y- Koordinate, bewegen.
Zeichnen wir also zunächst einen Kreis. Dazu verändern wir die paint - Methode wie folgt:
und müssen noch folgende Instanzvariablen (am Kopf des Programmes) initialisieren:
int x_pos = 10;
int y_pos = 100;
int radius = 20;
Um den Ball nun zu bewegen verändern wir pro Threaddurchlauf die x -Koordinate um eins, die run - Methode sieht also jetzt so aus:
Wenn man das Applet nun wie im 1. Kapitel gesehen in eine Html - Seite einbindet, dann sollte sich ein roter Ball einmal quer über das Applet bewegen.
SourceCode download
Applet ansehen