|
Animation ist in Applets ebenso möglich wie in Applikationen. Alle Techniken, die in Kapitel 24 erklärt wurden, sind grundsätzlich auch auf Applets anwendbar. Aufgrund der Tatsache, daß Applets in einem Browser laufen und über eine Netzwerk-Fernverbindung mit Daten versorgt werden müssen, sollten folgende Besonderheiten beachtet werden:
Wir wollen uns diese Regeln zu eigen machen und in diesem Abschnitt ein einfaches animiertes Applet entwickeln. Das Programm soll die Skyline einer Großstadt bei Nacht darstellen. Dabei gehen in den Wolkenkratzern die Lichter an und aus, auf einigen Dächern gibt es rote Blinklichter, und von Zeit zu Zeit schlägt der Blitz mit Krachen in einen der Wolkenkratzer ein. (Diese Aufgabenstellung erinnert nicht ganz zu Unrecht an einen bekannten Bildschirmschoner.) Abbildung 25.5 zeigt einen Schnappschuß des laufenden Programms.
Abbildung 25.5: Das Wolkenkratzer-Beispielprogramm Das Programm implementiert zwei Klassen, Skyscraper und SkyscraperApplet. Skyscraper repräsentiert einen Wolkenkratzer, der die Membervariablen x- und y-Position, Höhe, Breite und Anzahl der Fenster in x- und y-Richtung besitzt. Zusätzlich kann ein Skyscraper-Objekt auf Simulations-Events reagieren, die durch den Aufruf der Methode LightEvent ausgelöst werden. In diesem Fall wird das Licht in einem der Fenster an- oder ausgeschaltet oder das rote Blinklicht auf dem Dach getriggert. Das eigentliche Applet wird durch die Klasse SkyscraperApplet realisiert. In der init-Methode wird zunächst eine Reihe von Skyscraper-Objekten erzeugt und im Vector c abgelegt. Zusätzlich werden die Parameter DELAY, FLASH und THUNDER eingelesen, die zur Steuerung der Animationsverzögerung, der Blitzwahrscheinlichkeit und der Sound-Datei für den Donner dienen. In der Methode start wird ein Thread erzeugt, so daß die eigentliche Animation mit der repaint-Schleife in run abläuft. Um das Bildschirmflackern zu verringern, wird update überlagert, wie in Kapitel 24 erläutert. In paint wird per Zufallszahlengenerator eines der in v gespeicherten Skyscraper-Objekte ausgewählt und dessen LigthEvent-Methode aufgerufen, um ein Beleuchtungsereignis zu simulieren. Manchmal wird auch noch die Methode Lightning aufgerufen, um einen Blitzeinschlag darzustellen. Ein Blitz wird dabei durch einen Streckenzug vom oberen Bildrand bis zur Dachspitze eines Hochhauses dargestellt. Dieser Streckenzug wird für einen kurzen Augenblick in weißer Farbe auf den Bildschirm gezeichnet und anschließend durch erneutes Zeichnen in schwarzer Farbe wieder entfernt. Um ein realistisches Flackern zu erreichen, wird dieser Vorgang noch einmal wiederholt. Unmittelbar vor der Darstellung des Blitzes wird das zuvor geladene Donnergeräusch abgespielt. Hier ist der Quellcode des Applets:
|
![]() |
|
![]() |
Zum Aufruf des Applets kann beispielsweise folgende HTML-Datei verwendet werden:
001 <html> 002 <head> 003 <title>Skyscraper</title> 004 </head> 005 <body> 006 <h1>Skyscraper</h1> 007 <applet code=SkyscraperApplet.class width=500 height=300> 008 <param name="delay" value=75> 009 <param name="flash" value=0.01> 010 <param name="thunder" value="thunder.au"> 011 Hier steht das Applet Skyscraper.class 012 </applet> 013 </body> 014 </html> |
SkyscraperApplet.html |
|
Go To Java 2, Addison Wesley, Version 1.0.2, © 1999 Guido Krüger, http://www.gkrueger.com |