next up previous contents
Nächste Seite: 3. eXtensible Markup Language Aufwärts: Diplomarbeit Vorherige Seite: 1. Einleitung   Inhalt

Unterabschnitte

2. Macromedia Flash

Macromedia Flash wurde im Rahmen dieser Diplomarbeit aus guten Gründen zur Visualisierung von Wetterdaten gewählt. Das folgende Kapitel beleuchtet seine Vor- und Nachteile, untersucht das Dateiformat und geht auf verschiedene Möglichkeiten ein, Flash-Grafiken über eine Programmierschnittstelle zu erzeugen. Zuerst aber einige Informationen zur Entstehungsgeschichte von Macromedia Flash.

Das Softwareunternehmen Macromedia mit Sitz im kalifornischen San Francisco entstand im Jahr 1992 durch den Zusammenschluss der Firmen MacroMind und Authorware. Drei Jahre später konnte Macromedia seinen Kundenstamm erstmals bedeutend vergrößern - durch die Übernahme von Altsys, den Hersteller des Grafikprogramms Freehand.

Ebenfalls 1995 veröffentlichte die Firma FutureWave aus San Diego das vektororientierte Illustrationsprogramm SmartSketch und ein dazugehöriges Plugin namens FutureSplash-Player, um die mit SmartSketch erzeugten Illustrationen mit einem Webbrowser betrachten zu können. Aufbauend auf SmartSketch entwickelte FutureWave 1996 das Animationsprogramm FutureSplash-Animator - den Vorläufer der heutigen Entwicklungsoberfläche Flash Studio.

Ende 1996 übernahm Macromedia die Firma FutureWave. Die Produkte FutureSplash Animator und FutureSplash-Player wurden unter dem Namen Flash und Shockwave Flash-Player weiterentwickelt. Flash 1 und 2 erschienen daraufhin im Jahr 1997, weitere Versionen wurden jeweils im Abstand etwa eines Jahres ausgeliefert. Die vorerst letzte und fünfte Version von Flash existiert seit dem Sommer 2000.

Macromedia hat im Dezember 2000 weltweit mehr als 1200 Mitarbeiter und entwickelt außer Flash weitere Softwareprodukte im Bereich Webauthoring und Grafikerstellung (z.B. Macromedia Dreamweaver, Macromedia Fireworks). Laut einer unabhängigen Studie arbeiten mehr als eine Million professionelle Entwickler mit den Produkten von Macromedia. [Macr2000a]

Aber was ist so herausragend an Macromedias Produkten, was sind die Vorteile von Flash gegenüber herkömmlichen Grafikformaten?


2.1 Vorteile von Flash

Macromedia beschreibt sein Produkt Flash beziehungsweise dessen Dateiformat Shockwave Flash (SWF) folgendermaßen: ,,Flash ist der Standard für interaktive Vektorgrafiken und Animationen im Web.`` [Wolt1999]

Die Aussage zum erlangten Standard diskutiert der Abschnitt 2.2, doch was zeichnet Vektoren aus und warum ist Flash gerade für das Internet so gut geeignet?

Shockwave Flash ist ein Grafikformat für zweidimensionale Vektorgrafiken, in das aber ebenfalls pixelbasierte Grafiken (sogenannte Bitmaps) eingebunden werden können. Die Verwendung von Vektoren bringt eine Reihe von Vorteilen mit sich. Während Pixelgrafiken aus einer Matrix von Bildpunkten (Pixeln) bestehen und Informationen zur Farbe jedes Pixels enthalten, werden Vektorgrafiken mathematisch durch Vektoren und deren Eigenschaften beschrieben. Für eine Linie wird ein Anfangs- und ein Endpunkt, die Linienfarbe und ihre Stärke benötigt. Eine Kurve besitzt außerdem eine Krümmung, ein Kreis wird durch seinen Mittelpunkt und Durchmesser beschrieben. Die von Vektoren eingeschlossenen Flächen können mit Farben oder Farbverläufen gefüllt werden.

Pixelbasierte Grafiken haben den entscheidenden Nachteil, dass sie nur für eine einzige Auflösung erzeugt wurden, sie sind auflösungsabhängig. Vergrößert man den Ausschnitt einer Pixelgrafik, werden auch die einzelnen Pixel größer. Das Bild stellt sich wie ein Mosaik dar. Auch intelligente Anzeigetechniken, die in der Vergrößerungsstufe versuchen, durch Interpolation, d.h. das Einfügen von Pixeln mit Übergangsfarben, die Auflösung der Pixelgrafik zu erhöhen, bringen keine nennenswerten Verbesserungen.

Vektorbasierte Grafiken hingegen können in jeder Vergrößerungsstufe verlustfrei dargestellt werden, sie sind auflösungsunabhängig. Ihre Anzeige auf einem Monitor oder ihre Wiedergabe per Drucker ist zwar ebenfalls pixelbasiert, da diese Ausgabegeräte ein Gitter aus Farbpunkten steuern, die Darstellung der Vektorgrafik wird jedoch erst auf Clientseite, also für die entsprechende Auflösung und den ausgewählten Bereich, berechnet. So können auch vergrößerte Ausschnitte von Grafiken die maximale Auflösung des Ausgabegerätes nutzen.

Abbildung 2.1 veranschaulicht den Unterschied zwischen vektor- und pixelbasierten Grafiken an einem Beispiel.


Abbildung 2.1:
Vergleich von vektor- und pixelbasierter Grafik
 
Vektorgrafik (Flash 728 Bytes) Pixelgrafik (PNG, 2413 Bytes)

Ein weiterer Vorteil der in Flash verwendeten Vektortechnologie ist, dass Dateien mit Vektorgrafiken in der Regel kleiner als pixelbasierte Grafiken sind. Da nicht die Informationen jedes einzelnen Bildpunktes, sondern nur die Informationen der Linien und Kurven sowie deren Farbe, Strichstärke und Füllung übertragen werden müssen, sind Flash-Dateien außerordentlich klein. Dies kommt einem ernsten Problem des Internets entgegen: dessen begrenzte Bandbreite. Die Bandbreite beschreibt die Menge an Informationen, die pro Sekunde durch ein Netzwerk gelangt. Je geringer die Bandbreite, desto länger dauert es, bis zum Beispiel eine Webseite aus dem Internet geladen ist und angezeigt werden kann.

Für die Darstellung von Flash-Grafiken benötigt man auf jedem System den Flash-Player, den es als Webbrowser-Plugin oder als Standalone-Version gibt. Diese Einschränkung löst letztlich eines der größten Probleme von HTML: Die in Flash erstellten Grafiken werden bei beliebiger Auflösung auf mehreren Plattformen (Windows, Macintosh, Solaris, Linux) identisch dargestellt, da der einheitliche Flash-Player die Darstellung steuert. Sogar die Verwendung beliebiger Schriftarten stellt kein Problem dar, denn Texte wandelt Flash in Schriftkonturen um und fügt sie anschließend wie Grafikobjekte der Flash-Datei hinzu. Die dem Original zu Grunde liegenden Schriftarten müssen deshalb nicht auf dem Clientcomputer existieren.

Das Grafikformat Shockwave Flash ist also auflösungsunabhängig, plattformunabhängig und bandbreitenschonend. Macromedia hat Flash aber nicht nur als Vektorgrafikformat entwickelt, sondern ,,für interaktive Vektorgrafiken und Animationen``. Was ist mit Flash noch möglich?

Wahrscheinlich wäre es leichter, die Frage danach zu beantworten, was Flash nicht kann. Anfangs wurden mit Flash lediglich interaktive Buttons und ähnliche Navigationselemente erstellt, da die langsamen Internet-Verbindungen zur Zeit der ersten Versionen noch nicht dazu geeignet waren, vollflächige Animationen fließend zu übertragen. Inzwischen setzen sich auf Grund der günstigen Preisentwicklung schnellere Modems, ISDN und DSL immer mehr durch. Seitdem erstellen zahlreiche Internetagenturen komplette Websites, Produktpräsentationen und Werbespots in Flash. Vektor- und Bitmaptransparenz, komplexe Navigationen, problemlose Einbindung von Sound im kompimierten MP3-Format und der Einsatz beliebiger Schriftarten werden für Effekte aller Art genutzt: Überblendeffekte, Bewegung und sogar Morphing sind möglich geworden. Man spricht deshalb auch von ,,Flash-Filmen``.

Für Interaktionen mit dem Benutzer stehen Texteingabefelder und eine Skriptsprache namens ActionScript zur Verfügung. Aktionen können an bestimmte Bilder einer Filmsequenz oder an Buttons gekoppelt werden und den Ablauf der Animation steuern, neue Filme beziehungsweise Webadressen laden oder Eigenschaften der momentanen Grafikobjekte verändern.

Alle diese Elemente einer Animation liegen bei Flash in einer einzigen Datei, die zudem streamfähig ist. Das heißt, dass der Benutzer die ersten Bilder der mit Flash erzeugten Animationen bereits verfolgen kann, während die restlichen Bilder noch im Hintergrund geladen werden.

Eine Animation entsteht entweder durch Morphing, das ist das Überblenden eines Grafikobjekts in ein anderes, wobei der Computer die Zwischenschritte berechnet, was die Dateigröße weiter verringert, oder durch zeitbasierte Veränderungen. Die Steuerung der Animationsphasen erfolgt über die in Multimedia-Software üblichen Keyframes - dabei beschreiben Schlüsselbilder die Animationsphasen auf der Zeitleiste. Bewegung entsteht durch Interpolation zwischen den Keyframes. Flash Interessante Perspektiven eröffnet die mit Flash 3 eingeführte variable Transparenzfunktion, die auch Ein- und Ausblendungen ermöglicht.

Macromedia Flash - ,,der Standard für interaktive Vektorgrafiken und Animationen im Web``? Nach allen Vorteilen, die Flash offensichtlich zu bieten hat, gibt es auch ein paar Einschränkungen.

Es ist sicherlich möglich, mit Flash ansprechende und animierte Webseiten zu erstellen, doch die Gestaltung eines HTML-Dokuments mit eingebundenen Pixelgrafiken ist weniger aufwändig und auch kostengünstiger. Außerdem ist die zu transferierende Datenmenge bei Flash-Dokumenten immer noch um ein Vielfaches höher als die für ein reines HTML-Dokument, wenn nur textbasierte Informationen übertragen werden sollen.

Folgender Vergleich zeigt die möglichen Mehrkosten einer mit Flash gestalteten Webpräsenz auf: HTML-Editoren stehen häufig kostenlos zur Verfügung (z.B. Netscape Composer). Das Autorensystem Flash zum Entwickeln von Flash-Animationen kostet dagegen mehrere hundert Mark. Dynamisch erzeugte Webseiten lassen sich z.B. mit einem Apache Webserver und der Skriptsprache PHP auf einem Linux-Rechner komplett als Freeware-Lösung realisieren, das Serverprodukt Macromedia Generator ermöglicht die dynamische Erzeugung von Flash-Filmen wie Balkendiagrammen, Tortengrafiken und News-Tickern, kostet aber mehrere tausend Mark.

Des Weiteren ist bei Flash zu bedenken, dass es bei alten und leistungsschwachen Rechnern zu ruckelnden Animationen kommt. Die Darstellung eines Flash-Filmes, also die Umwandlung der mathematischen Beschreibung der Grafikobjekte in Bildschirmpunkte, benötigt wesentlich mehr Rechenleistung als die Interpretation einer HTML-Datei. Bei der heute für Computer typischen Ausstattung ist diese Rechenleistung jedoch im Überfluss vorhanden und wird während des ``Surfens'' sowieso nicht benötigt.


2.2 Internet-Standard Flash

Die Verwendung von Macromedia Flash eröffnet neue Möglichkeiten des Webdesigns. Shockwave Flash ist aber noch ein relativ neues Dateiformat und daher nicht so verbreitet wie die herkömmlichen Grafikformate JPG oder GIF. Die wenigsten Bildverarbeitungsprogramme können bisher mit der Dateiendung SWF etwas anfangen. Ohne die Sicherheit des Entwicklers, dass zumindest ein Großteil der Endbenutzer die Flash-Animationen betrachten kann, wäre es fatal, dieses Format im WorldWideWeb zu verwenden. Das Angebot des Internets ist so vielfältig und groß, dass eine nicht darstellbare Webseite vom Benutzer einfach ignoriert wird. Sollte erst noch der Download eines Plugins nötig sein, um den Inhalt der Seite vollständig zu Gesicht zu bekommen, sinkt die Akzeptanz eventuell soweit, dass die Webseite verlassen wird.

Macromedia gibt an, dass im Dezember 2000 96,4% der weltweiten Internetbenutzer das Flash-Plugin auf ihrem Computer installiert hatten. Die unabhängige Marktforschungsfirma NPD Online kam bei einer Befragung von 2.634 Personen zu diesem Ergebnis. [Macr2000b]


Weltweite Verfügbarkeit nach Version Flash 2 Flash 3 Flash 4 Flash 5
USA 96,4% 94,7% 86,1% 32,1%
Kanada 96,5% 95,2% 91,0% 35,9%
Europa 96,8% 94,9% 89,8% 45,3%
Asien 95,5% 93,7% 86,5% 41,4%
Südamerika 95,5% 92,5% 89,6% 43,3%

Tabelle 2.1: Verfügbarkeit des Macromedia Flash-Players (Dez. 2000)


Tabelle 2.1 zeigt deutlich, dass die 96,4% Verfügbarkeit, die Macromedia angibt, jedoch nur für die USA und nur für Flash-Filme gilt, die abwärtskompatibel zur Version 2 sind. Daher ist diese Aussage sehr kritisch zu betrachten, denn die einzelnen Flash-Versionen bauen zwar aufeinander auf, unterscheiden sich aber teilweise erheblich. Die dritte Version führt z.B. Vektortransparenz, Morphing und Actions ein. Flash 4 erweitert die Skriptsprache ActionScript, bringt Eingabetextfelder zur Erstellung von Formularen mit und kann das inzwischen sehr populäre Audioformat MP3 verarbeiten. Die Neuerungen von Flash 5 betreffen schließlich vor allem die Bedienfreundlichkeit von Flash. Die grafische Entwicklungsumgebung ähnelt nun dem Erscheinungsbild anderer Macromedia-Produkte und die ActionScript-Syntax wurde an das bekannte JavaScript angepasst und um einen Debugger erweitert.

Deshalb sollte man sicherheitshalber vom Flash-Player der Version 4 als Grundvorraussetzung ausgehen, um (zur Zeit noch) alle Flash-Filme betrachten zu können. Für diesen Fall ermittelte die genannte Studie im Durchschnitt noch 89% Verfügbarkeit bei den Benutzern. Dies entspricht immer noch 287 Millionen Menschen, beziffert man die Anzahl der Online-User mit 323 Millionen [IDC2000].

Ein Vorteil des Flash-Plugins, der sicher zu seiner Verbreitung beiträgt, ist seine momentane Größe von 220 Kilobytes (Version 5 für Windows). Eine Datei, die mit einem Standardmodem (33,6 KBit/s) innerhalb einer Minute auf den eigenen Rechner kopiert werden kann. Doch ist daraus abzuleiten, dass das Flash-Plugin 287 Millionen mal aus dem Internet heruntergeladen wurde? Sicher nicht, da dies - wie bereits in der Einleitung erwähnt - ein Vorgang ist, der vom Endbenutzer gern vermieden wird, auch wenn das Plugin selbst natürlich kostenlos zu beziehen ist.

Die Verbreitung des Shockwave Flash-Plugins basiert vielmehr auf einer geschickten Strategie von Macromedia: Durch Kooperation mit Firmen wie Microsoft, Netscape und Apple wird es inzwischen mit jedem neuen Windows- und Macintosh-Betriebssystem ebenso wie mit jedem neuen Webbrowser für diese Systeme (Internet Explorer, Netscape, AOL) standardmäßig mitgeliefert. Seit 1999 existieren außerdem Versionen für Linux, Solaris und IRIX. Das Flash-Plugin steht damit heute auf neuen Rechnern automatisch zur Verfügung und selbst Unix-Systeme werden unterstützt.

Eine plattformunabhängige Java-Version des Plugins existiert zusätzlich für Systeme die über einen Java-fähigen Webbrowser verfügen, sie wurde jedoch seit Flash 3 nicht weiterentwickelt.

Um positiv auf die Verbreitung und die Akzeptanz des Flash-Dateiformates einzuwirken und sich damit gegen ehemalige Konkurrenten wie Adobes PGML zu schützen, veröffentlichte Macromedia bereits im Juni 1998 im Rahmen des ,,Flash Open File Format``-Programms das Dateiformat der Flash-Filme. Macromedia verkündete offiziell, Flash damit als offenen Internet-Standard etablieren zu wollen.

Ein erstes Ergebnis der sogenannten ,,SWF file format specification`` war Oliver Debons Flash-Plugin für Netscape unter Linux [Debo2000], das vor dem offiziellen Plugin von Macromedia zum Download bereit stand.

Die noch unvollständige und teilweise fehlerhafte Dokumentation des Dateiformates löste Macromedia Anfang 2000 durch das SWF Software Development Kit (kurz: SWF-SDK) ab, das kostenlos aus dem Internet zu beziehen ist [Macr2000c]. Darin beschreibt die vollständig überarbeitete Spezifikation sehr ausführlich das Dateiformat und eigene SWF-Dateien lassen sich mit einer Sammlung von C++-Klassen erzeugen. Die Idee von Macromedia ist offensichtlich: Mit Hilfe des SWF-SDK lassen sich Flash-Filme über eine Programmierschnittstelle erzeugen, was Dritthersteller ermutigen soll, Unterstützung für das SWF-Dateiformat in ihre Programme zu integrieren. Adobe hat dies bereits für seine Produkte Illustrator und LiveMotion getan, Corel integrierte eine Exportschnittstelle für SWF-Dateien in CorelDRAW.

Aber nicht nur die Verbreitung des Flash-Dateiformates wird von Macromedia forciert. Zeitgleich mit dem SWF-SDK zur Erzeugung von Flash-Filmen veröffentlichte Macromedia die Quellen des Flash-Players. Softwarehersteller können sich von Macromedia lizensieren lassen und so ihre Produkte mit Hilfe der Flash-Player-Quellen um die Fähigkeit der Wiedergabe von Flash-Filmen erweitern.

Sehr interessant für die vorliegende Diplomarbeit ist das zuerst genannte SWF-SDK, mit dem sich ohne Einsatz des Flash Studios Flash-Filme erzeugen lassen. Mit Hilfe dieses Software Development Kits lässt sich ein Mechanismus entwickeln, der aus Wettervorhersagedaten beziehungsweise beliebigen zeit- und raumbasierten Daten automatisch einen animierten Flash-Film generiert.

Das SWF-SDK stellt eine Programmierschnittstelle zur Verfügung, die den internen Aufbau einer SWF-Datei nahezu versteckt und stattdessen anschauliche Objekte zur Kapselung der Information verwendet. Ein detailliertes Verständnis des Dateiformates bleibt dem Benutzer damit erspart. Der folgende Abschnitt 2.3 gibt trotzdem einen kurzen Überblick über seine Idee und Struktur. Abschnitt 2.4  widmet sich anschließend dem SWF-SDK.


2.3 SWF - das Dateiformat

Das Dateiformat der Flash-Filme wurde von Macromedia mit dem Ziel entworfen, Vektorgrafiken und Animationen über das Internet zu übertragen. Deshalb wurde es als effizientes Übertragungsformat und nicht als Austauschformat zwischen verschiedenen Grafikeditoren entwickelt. Macromedia gibt an, dass das SWF-Dateiformat die folgenden Gesichtspunkte erfüllt [Macr2000c]:

Neben den aufgeführten Ideen des Dateiformates ist vor allem die tagbasierte Strukturierung der Daten interessant für die spätere Erzeugung von Flash-Filmen mit dem SWF-SDK. Deshalb soll der interne Dateiaufbau noch genauer betrachtet werden:

Alle SWF-Dateien besitzen einen Dateikopf, der mit der Signatur ,,SWF`` gefolgt von der Versionsnummer des Dateiformats beginnt. Es folgen die Dateigröße in Bytes und die Breite und Höhe des Flash-Filmes. Weiter erhält man Auskunft darüber, wie viele Animationsbilder (Frames) die Datei enthält und mit welcher Rate sie abgespielt werden sollen. Dem Dateikopf folgen beliebig viele Datenblöcke und ein abschließender Endblock, wie in Abbildung 2.2 skizziert. Die Datenblöcke genügen alle einem einheitlichen Format, so dass ein Programm, das eine SWF-Datei einliest und verarbeitet, Blöcke überspringen kann, die es nicht versteht ( Erweiterbarkeit).

Abbildung 2.2: SWF-Dateistruktur

 

Die ,,SWF File Format Documentation`` von Macromedia [Macr2000c] erläutert das Format der unterschiedlichen Datenblöcke. Dort werden für Datenblöcke die Begriffe Tag und Record verwendet. Tags sind spezielle Records, die neue Datenblöcke einleiten und den Blocktyp festlegen. Records enthalten Attribute und eventuell wieder Records oder Verweise auf andere Tags (Datenblöcke). Ein Beispiel für die Definition eines allgemeinen Grafikobjekts zeigt Quellcode 2.1.

DEFINESHAPE tag - leitet Definition des Grafikobjekts ein
tag id - Typ des Datenblocks
character id - Name des Grafikobjekts
RECT record - Größe des Grafikobjekts
    ... - Koordinaten
SHAPEWITHSTYLE record - Defintion des Grafikobjekts
    FILLSTYLE record - Füllstil
        ... - Definition des Füllstils
    LINESTYLE record - Linienstil
        ... - Definition des Linienstils
    STRAIGHTEDGE record - gerade Linie
        ... - Koordinaten von Anfangs- und Endpunkt
    CURVEDEDGE record - gekrümmte Line
        ... - Koordinaten und Bezierpunkte
    ... - weitere Linien
    ENDSHAPE record - Endpunkt

Quellcode 2.1: Definition eines SWF-Grafikobjekts

Es existieren zwei Kategorien von SWF-Tags beziehungsweise Typen von Datenblöcken: Definitionsblöcke (definition tags) und Kontrollblöcke (control tags). Definitionsblöcke beschreiben den Inhalt des Flash-Filmes. Sie definieren Grafikobjekte (Rechtecke, Kreise, Texte, ...), eingebettete Pixelgrafiken und Sound. Während ihrer Definition bekommen diese Elemente eine eindeutige Kennung zugewiesen, die in einer Referenzliste gespeichert wird. Kontrollblöcke werden dazu verwendet, den Film zu steuern und die Elemente des Films zu verändern. So kann z.B. ein Grafikobjekt platziert, Sound gestartet oder zu einem anderen Animationsbild gesprungen werden. Die Elemente des Films werden dabei über die Referenzliste angesprochen, können also auch mehrfach im Film verwendet werden.

Bis zur Darstellung eines Grafikobjekts auf dem Bildschirm laufen die folgenden Schritte ab:

  1. ein Definitionsblock definiert das Grafikobjekt
  2. das Grafikobjekt bekommt eine eindeutige Kennung zugewiesen
  3. die Kennung wird in der Referenzliste gespeichert
  4. ein Kontrollblock referenziert das Grafikobjekt über seine Kennung
    und stellt es auf dem Bildschirm dar
Um die Streamfähigkeit von Flash-Filmen zu garantieren, darf natürlich ein Kontrollblock stets nur auf Definitionsblöcke verweisen, die vor ihm in der Datei stehen.

Mit der Abbildung der Tags und Records in die C++-Klassen des SWF-SDK und dessen Anwendung beschäftigt sich der folgende Abschnitt.


2.4 SWF-SDK

Das ,,Macromedia Flash File Format (SWF) Software Development Kit (SDK)`` - so der volle Titel - wurde bereits unter dem Aspekt ,,Internet-Standard Flash`` kurz erwähnt. Es steht kostenlos zum Download auf Macromedias Website bereit und enthält neben der Dokumentation des SWF-Dateiformats in C++ geschriebenen Quellcode, der das Erzeugen von Flash-Dateien über eine Programmierschnittstelle ermöglicht.

Die mitgelieferten Klassen sind mit der Einschränkung frei zu verwenden, dass sie lediglich zur Entwicklung von SWF-exportierenden Programmen genutzt werden [Macr2000c]. Macromedia verlangt, dass die unter Verwendung des SDK entwickelten Produkte Flash-Filme im korrekten Format speichern. Erzeugte SWF-Dateien müssen erstens fehlerfrei mit einem aktuellen Flash-Player abgespielt werden können und zweitens fehlerfrei in die grafische Entwicklungsumgebung Flash importiert werden können. Macromedia übernimmt keine Garantie für die Korrektheit der bereitgestellten Software und behält sich vor, das SDK nach Bedarf zu aktualisieren.

Das zur Zeit verfügbare SWF-SDK stellt über eine Bibliothek von C++-Klassen die komplette Funktionalität bereit, die benötigt wird, um Flash 3 SWF-Dateien zu erzeugen. Die Klassen der Bibliothek können in zwei Bereiche unterteilt werden: den Low Level Manager und den High Level Manager.

Der Low Level Manager hat das Ziel, die Struktur einer SWF-Datei so genau wie möglich abzubilden. Für jedes Defintions- und Kontroll-Tag existiert eine Klasse, die von der Basisklasse FObj (für Flash Object) abstammt. Alle übrigen Records sind ebenfalls als Klassen realisiert. Den eigentlichen Flash-Film erstellt die Klasse FObjCollecton, die die FObjs sammelt und schließlich in eine Datei schreibt. Tabelle 2.2 zeigt die Gruppen, in die sich die Klassen des Low Level Managers einteilen lassen.


FObjCollection - sammelt Tags (FObjs) und schreibt die Datei
FObj - Basisklasse aller Tagklassen
   Control Tag Classes - Kontrolltags (beginnen mit FCT)
   Definition Tag Classes - Definitonstags (beginnen mit FDT)
Primitive Data Classes - weitere Records wie Füllstil, Farbe, Linie, ...
Helper Classes - Hilfsklassen für Sound und Pixelgrafiken

Tabelle 2.2: Klassen des Low Level Managers


Der High Level Manager abstrahiert die zugrundeliegende Dateistruktur aus Tags und Records und bildet eine benutzerfreundliche Schnittstelle zum Erzeugen von Flash-Filmen. High Level Klassen basieren auf den Klassen des Low Level Managers und beginnen mit dem Präfix HF (für High Level Flash). Es existieren Klassen zum Erzeugen von Filmen (HFMovie), Schlüsselbildern (HFFrame), Grafikobjekten (HFRectangle, HFButton, ...), Text (HFText), Bitmaps (HFBitmap) und Sound (HFSound). So lässt sich zum Beispiel ein Kreis mit Hilfe der Klasse HFCircle aus Mittelpunkt und Radius erstellen und muss nicht aus einzelnen gekrümmten Linien (Low Level Klasse FShapeRecEdgeCurved) zusammengesetzt werden. Im Gegensatz dazu sind jedoch einige Methoden, insbesondere die des ActionsScripts, nicht vom High Level Manager implementiert. Die tatsächlich vorhandenen HF-Klassen zeigt Tabelle 2.3.


HFMovie - Flash-Film
HFFrame - Schlüsselbild
HFObject - Basisklasse aller Film-Elemente
   HFButton - Schaltknopf
   HFFont - Schriftart
   HFShape - Basisklasse aller Grafikobjekte
      HFEditText - Editierbares Textfeld
      HFOval - Ellipse
         HFCircle - Kreis
      HFPolygon - Polygon
      HFRectangle - Rechteck
         HFBitmap - Rechteck mit Pixelgrafik gefüllt
      HFText - Text
   HFSound - Sound
HFAction - ActionScript-Anweisung

Tabelle 2.3: Klassen des High Level Managers


Die Verwendung der Klassen des High Level Managers soll an einem Beispiel (siehe Quellcode 2.2) verdeutlicht werden. Es werden drei gleich große Quadrate (HFRectangle) mit unterschiedlichem Füllstil erzeugt, die sich teilweise überlappen. Das dritte Quadrat dreht sich in 12 Schritten um die eigene Achse, es reicht aber aus, eine Viertel Drehung zu imlementieren, da das Quadrat bereits dann wieder seine ursprüngliche Form annimmt.

#include <HF3SDK.h>

int main() {

    // erzeuge einen neuen Flash-Film (300*300 Pixel)
    HFMovie movie = HFMovie();
    movie.SetSize( 6000, 6000 );
    movie.SetFrameRate( 3 );

    // drei Rechtecke (FPIXEL = 20)
    HFRectangle* rect1 =
        new HFRectangle( 0*FPIXEL,0*FPIXEL, 100*FPIXEL,100*FPIXEL );
    HFRectangle* rect2 =
        new HFRectangle( 50*FPIXEL,50*FPIXEL, 150*FPIXEL,150*FPIXEL );
    HFRectangle* rect3 =
        new HFRectangle( 100*FPIXEL,100*FPIXEL, 200*FPIXEL,200*FPIXEL );
      
    // setze die Füllfarben
    rect1->SetSolidFill( Red_RGBA );
    rect2->SetLinearFill( Blue_RGBA, Black_RGBA );
    rect3->SetRadialFill( Yellow_RGBA, Violet_RGBA );

    // platziere Rechtecke übereinander
    rect1->SetDepth( 1 ); rect2->SetDepth( 2 ); rect3->SetDepth( 3 );

    // füge Rechtecke zu erstem Schlüsselbild hinzu
    movie.Frame( 0 )->AddObject( rect1 );
    movie.Frame( 0 )->AddObject( rect2 );
    movie.Frame( 0 )->AddObject( rect3 );

    // rect3 dreht sich um den eigenen Mittelpunkt
    movie.Frame( 1 )->RemoveObject( rect3 );
    rect3->Rotate( FloatToFixed( 30.0 ) ); 
    movie.Frame( 1 )->AddObject( rect3 );

    movie.Frame( 2 )->RemoveObject( rect3 );
    rect3->Rotate( FloatToFixed( 60.0 ) );
    movie.Frame( 2 )->AddObject( rect3 );

    // Animation beginnt von vorn

    // schreibe die SWF-Datei und beende das Programm
    movie.WriteMovie("HFRectangleExample.swf");
    delete rect1; delete rect2; delete rect3; 
    return( 0 );
}

Quellcode 2.2: High Level Manager Beispiel

Die allererste Zeile, die Include-Anweisung, bindet die Headerdatei HF3SDK.h des SWF-SDK ein, die benötigt wird, um die Klassen des High Level Managers verwenden zu können. Sie weist außerdem auf die Version hin, in der das SWF-SDK momentan vorliegt.6

Größenangaben werden in Flash stets in Twips abgespeichert, eine künstliche Einheit, die 1/20 Pixel entspricht. Das heisst, dass ein 1000*1000 Twips großes Quadrat in seiner Ursprungsgröße 50*50 Pixel auf dem Bildschirm einnimmt. (Natürlich kann es auf jede beliebige Größe skaliert werden, schließlich ist es ein Vektorgrafikobjekt.) Die im SDK definierte Konstante FPIXEL spiegelt den Faktor 20 wider. Für die Drehung und das Skalieren von Objekten werden ebenfalls flash-interne Größen verlangt. Der Zoomfaktor oder Rotationsgrad kann aber mit dem Makro FloatToFixed in den Argumenttyp umwandelt werden.

Die Elemente des Flash-Films können über den Aufruf der Methode SetDepth(int) in verschiedene Ebenen positioniert werden. Höhere Ebenen liegen über niedrigeren und verdecken die darunterliegenden beziehungsweise lassen diese je nach Transparenz ihrer Füll- und Linienfarbe durchscheinen. Die Ebene, in der ein Grafikobjekt platziert ist, wird benötigt, um dieses Grafikobjekt während der Animation wieder vom Bildschirm verschwinden zu lassen. Flash referenziert die Elemente des Films über ihre ,,character id`` und eine Ebenenangabe. Mehrere Instanzen eines Grafikobjekts dürfen deshalb nicht auf derselben Ebene existieren. Der High Level Manager kümmert sich um die Einhaltung dieser Regel 7.

Kompiliert und startet man den Quellcode des Beispiels, wird der beschriebene Flash-Film erzeugt. Seine Dateigröße beträgt lediglich 266 Bytes. Abbildung 2.3 zeigt eine Momentaufnahme des zweiten Schlüsselbildes, das dritte Quadrat ist bereits um 30 Grad rotiert.

Abbildung 2.3: Screenshot des Beispiel-Films


2.5 Ausblick

Zusammenfassend lässt sich feststellen, dass SWF-Dateien sowohl mit der grafischen Entwicklungsumgebung Macromedia Flash als auch mit dem Flash File Format SDK erzeugt werden können. Die grafische Entwicklungsumgebung kostet mehrere hundert Mark, ist aber wesentlich einfacher zu bedienen als das kostenlose SWF-SDK und setzt keinerlei Programmierkenntnisse voraus - der Benutzer ,,malt einfach drauf los``, kann seine Ergebnisse mitverfolgen und sofort testen. Das Software Development Kit ermöglicht das Erzeugen von Flash-Filmen über eine Programmierschnittstelle, die abgesehen von Programmierfehlern auch Fehler im Layout nicht sofort kenntlich macht. Das Testen eines Filmes erfordert stets das Kompilieren der Quelle und das Öffnen des erzeugten Films mit einem Flash-Player. Der Entwicklungszyklus verlängert sich immens.

Dennoch eröffnet das SWF-SDK neue interessante Möglichkeiten: Die automatische Generierung von Flash-Filmen mit ähnlichem Inhalt, die z.B. Daten desselben Formats visualisieren. Genau hier setzt die vorliegende Diplomarbeit an. Wettervorhersagedaten und Landkarten sollen jeden Tag nach bestimmten Vorgaben in eine Animation umgesetzt werden. Die Aufgabe ist es also, einen Mechanismus zu entwickeln, der diesen Visualisierungsvorgang durchführt. Einen ersten Entwurf eines solchen Generators8 skizziert Abbildung 2.4.

Abbildung 2.4: Erster Entwurf eines Flash-Generators

Ein Nachteil bleibt weiterhin, dass für jede minimale Layoutänderung des erzeugten Flash-Films die Programmquellen des Generators angepasst und neu übersetzt werden müssen. Ein zusätzliches Konfigurationsmodul wäre wünschenswert, wie schon in Abbildung 2.4 angedeutet. Einstellungen an z.B. Farben, Füll- und Linienstilen lassen sich so zur Laufzeit vornehmen. Eine Auswahl erfolgt am einfachsten über Auswahlleisten und Schaltknöpfe einer grafischen Oberfläche. Da das SDK in C++ geschrieben ist, folgt daraus die Programmierung einer Konfigurationsoberfläche in C++?

Exkurs: Sprachkonflikt - C++ versus Java

Das SWF-SDK besteht aus Klassen, die ohne jegliche Bildschirmeingabe und -ausgabe arbeiten. Es kann auf jeder Plattform mit dem Gnu C++-Compiler übersetzt werden. Auch der Flash-Player ist inzwischen für verschiedene Plattfomen implementiert, Flash-Filme können plattformübergreifend betrachtet werden (siehe Abschnitt 2.2). Die angestrebte Konfigurationsoberfläche des Flash-Generators lässt sich jedoch nur für mehrere Systeme gleichzeitig entwickeln, wenn Java als Programmiersprache verwendet wird. Java bietet die Möglichkeit, plattformunabhängige Applikationen mit grafischer Oberfläche zu entwickeln.

Die Idee, die C++-Klassen des SWF-SDK mit eigenen Java-Klassen zu kombinieren, lässt sich über eine Schnittstelle namens Java Native Interface (JNI) realisieren. Mit der JNI-Technik wird die Schnittstelle zwischen C++-Bibliothek und Java einmalig über die Methodenköpfe definiert und im Folgenden lassen sich C++-Methoden aus Java heraus aufrufen.

Hier kommt es also zum Entscheidungskonflikt zwischen C++ und Java als zu verwendende Programmiersprache für die Implementation eigener Klassen, da beide oben genannten Varianten prinzipiell durchführbar sind. Für C++ spricht die bessere Performance und dass das SWF-SDK in C++ geschrieben ist. Bei einer einheitlichen C++-Lösung kann das SWF-SDK direkt verwendet werden, die Implementation ist jedoch plattformabhängig. Java bedeutet im Gegensatz dazu einen erheblichen Mehraufwand an Programmierarbeit, da die Schnittstelle zum SWF-SDK mittels JNI erst geschaffen werden muss.

Das Argument der Plattformunabhängigkeit überwiegt jedoch und lässt die Entscheidung zugunsten von Java ausfallen, denn das folgende Kapitel über das Datenformat XML wird zeigen, dass XML ebenso wie Java unabhängig von der verwendeten Plattform einsetzbar ist. Java und XML sind wie füreinander geschaffen. Die Wahl von Java erfordert den erwähnten zusätzlichen Programmieraufwand, ermöglicht aber eine elegantere Lösung. Z.B. entfallen auf diese Weise sämtliche Zeichenketten-Konvertierungen vom erweiterten Unicode-Zeichensatz, der in C++ für XML-Daten verwendet wird, in den ASCII-Zeichensatz des C++-Programmcodes und umgekehrt.


Fußnoten

... Anti-Aliasing3
Kantenglättung zur Verminderung des Treppeneffekts, der durch die Pixeldarstellung bei schrägen und gekrümmten Linien entsteht. Durch Interpolation, d.h. eine farbliche Angleichung benachbarter Bildpunkte, werden die ,,Treppenstufen`` ausgeglichen.
... Rendering4
Englische Bezeichnung für ,,Übersetzung`` oder ,,Übertragung``. Im CAD- und Grafikbereich versteht man unter Rendering die optische Aufwertung eines zwei- oder dreidimensionalen CAD-Modells mittels computerunterstützter Prozesse / Algorithmen. Dazu können beliebige Lichtquellen positioniert sowie Farben bzw. Texturen und andere Effekte zugeordnet werden. Im Zusammenhang mit Flash bezeichnet Rendering die Umsetzung der mathematischen Beschreibung der Vektorgrafik in eine Pixeldarstellung für bestimmte Auflösungen und Farbtiefen.
... Farbtiefe5
Informationsmenge, mit der die Farbe eines Bildpunktes beschrieben wird. 24 Bit Farbtiefe verteilen sich auf 8 Bit je Farbkanal (rot, grün, blau = RGB) und entsprechen ,,TrueColor`` mit 16,7 Millionen möglichen Farbwerten.
... vorliegt.6
Dennoch gibt Macromedia auf seinen Webseiten an, dass sich mit dem SWF-SDK Flash-Filme der Version 4 generieren lassen. Diese Aussage ist falsch, weil die in Flash 4 eingeführten ActionScript-Anweisungen noch nicht unterstützt werden.
... Regel7
Ein Fehler im SWF-SDK: Mehrere Instanzen eines Objekts werden vom High Level Manager auf unterschiedlichen Ebenen platziert, löschen lässt sich jedoch nur die zuletzt hinzugefügte Instanz. Eine eigenständige Korrektur der Klasse HFObject war nötig, um den Fehler zu beheben. Macromedia reagierte auf eine Mitteilung dieses Fehlers nur mit einem Verweis auf die OpenSWF-Newsgroup von www.flashkit.com.
... Generators8
hiermit ist nicht das Softwareprodukt Macromedia Generator gemeint.

next up previous contents
Nächste Seite: 3. eXtensible Markup Language Aufwärts: Diplomarbeit Vorherige Seite: 1. Einleitung   Inhalt
Benjamin Stark
2001-02-14