Bei Macromedias
Flash wird zwischen zwei Formaten unterschieden: zum Einen das interne
Beschreibungsformat, welches
die Extension ".fla" hat und zum Anderen das Darstellungsformat,
welches vom Player interpretiert wird und die
Extension ".swf" hat (welches für Shockwave Flash
steht und ihren Ursprung vom Macromedia Director hat).
Ein Flash-Movie hat ebenso wie ein konventioneller Film eine feste
Bildrate, jedoch wird das jeweils aktuell
angezeigte Bild zur Laufzeit berechnet. Die Filmsequenzen können
sequentiell oder parallel ablaufen und auch dynamisch
erzeugt werden.
Da Grafiken im Internet so klein wie möglich sein sollten,
um die Downloads und das Laden von Webseiten so schnell
wie möglich zu bewerkstelligen, ist das SWF-Format sehr effektiv
aufgebaut. Das SWF-Format basiert auf Vektoren, bei
denen nur die Form die Farbe und die Position gespeichert werden
muß, da der Rest beim Anzeigen berechnet wird.
Der Header:
Am Anfang jeder SWF-Datei stehen die drei Zeichen S, W und F, welche
die Datei eindeutig als Shockwave Flash-File
kennzeichnen. Darauf folgen ein einfaches Byte, welches die Versionsnummer
darstellt und die gesamte Datei-Laenge
als vorzeichenlose 32-bit-Zahl. Anschließend die Film-Breite
und -Höhe, danach folgt die Frame Rate als
vorzeichenlose 16-bit Zahl, welche in Frames Per Seccond (fps) angegeben
ist. Zuletzt befindet sich im Header noch
die Information über die Anzahl der gesamt verwendeten Frames
des Filmes, ebenfalls als vorzeichenlose 16-bit Zahl.
Nach dem Header folgt eine zusammenhängende Serie von Datenblöcken.
Jeder dieser Blöcke hat einen Tag-Typ und eine Länge.
Wobei hier zwischen kurzen und langen Tags unterschieden wird: Kurze
Tags werden bei Blöcken von 62 Bytes
und weniger verwendet; lange Tags können jedoch bei jeder Blockgröße
verwendet werden.
Jedes Programm, das eine SWF-Datei parst kann Blöcke überspringen,
welche es nicht versteht. Datenblöcken können
auf Offsets im eigenen Block verweisen; jedoch nicht auf Offsets
in anderen. Dies ermöglicht es Tools, Tags in
einer SWF-Datei zu entfernen, hinzuzufügen oder zu modifizieren.
Gegenwärtig sind viele nützliche Blocktypen bereits definiert.
Die Tagnummern von 0 bis 511 sind für zukünftigen
Gebrauch reserviert. Die Tagnummern von 512 bis 1023 sind für
3rd-party-Anwendungen reserviert.
Bei den Tags wird zwischen zwei verschiedenen Typen unterschieden:
1. definierende Tags, welche Formen, Bitmaps,
Buttons, Texte, Schriften und Sounds definieren und 2. Steuerungs-Tags,
welche die Abläufe in eine Flash-Film
steuern. Steuerungs-Tags werden zum Beispiel verwendet, um Objekte
auf dem Bildschirm zu bewegen, Frames zu zeigen und Sounds zu abzuspielen.
Das End-Tag wird verwendet, um das Datei-Ende zu signalisieren.
Die anzuzeigenden Objekte haben jeweils eine Tiefen-Nummer, welche
bei Null beginnt und dann inkrementiert wird.
Jedes Objekt hat dabei seine eigene Tiefen-Nummer.
Ein Flash-Film ist wie eine Matrix aufgebaut, die bei einem typischen
72 dpi Display pro Pixel noch mal in 20
Untereinheiten aufgeteilt ist. Dieses ermöglicht das Hereinzoomen
in den Film und eine präzise Positionierung der
Objekte.
Dateikomprimierung:
Die Elemente in einer SWF-Datei werden wiederverwendet. Sie werden
Einmal definiert und danach wird ggf. nur die
Position geändert. Es wird eine Vielfalt an Komprimierungstechniken
benutzt: Ein Bitmap wird Beispielsweise als JPEG
gespeichert. Sounds werden nach dem ADPCM (Adaptive Differential
Pulse Code Modulation) - Verfahren gespeichert.
Figuren werden in einem sehr effizienten Summenkodierungssystem
komprimiert. Wenn immer es möglich ist, werden
Zahlen im Effizientesten Bit-Raum zusammengefaßt. In SWF-Dateien
werden nur die Veränderungen von Objekten
gespeichert. Komprimiert wird nicht die Datei im ganzen, sondern
die einzelnen Elemente, welche dekomprimiert werden, sobald sie
gebraucht werden. |