prev up next

Datentypen in SWF

Damit Flashfilme möglichst platzsparend sind, wird für Koordinaten-, Transformations- oder andere Werte immer der kleinstmögliche Datentyp genutzt. Die wichtigsten Datentypen im SWF-Format sind in der Tabelle 2 aufgeführt.

Tabelle 2: Die wichtigsten Datentypen im SWF-Fileformat
Datentyp Erläuterung
SI8 Signed 8-bit Integer Wert
SI16 Signed 16-bit Integer Wert
SI8[n] Array mit ,,n `` Signed 8-bit Integer Werten
SI16[n] Array mit ,,n `` Signed 16-bit Integer Werten
UI8 Unsigned 8-bit Integer Wert
UI16 Unsigned 16-bit Integer Wert
UI32 Unsigned 32-bit Integer Wert
UI8[n] Array mit ,,n `` Unsigned 8-bit Integer Werten
UI16[n] Array mit ,,n `` Unsigned 16-bit Integer Werten
SB[nBits] Signed Bit Wert (,,n `` Bits werden genutzt)
UB[nBits] Unsigned Bit Wert (,,n `` Bits werden genutzt)


Aus diesen Werten werden weitere Datentypen abgeleitet, z.B. der Datentyp RECT, der exemplarisch näher aufgeschlüsselt werden soll. Der Datentyp RECT enthält die Koordinaten für ein Rechteck (Tabelle 3) und wird unterschiedlich genutzt, z.B. als Definition für die Größe eines Flashfilmes oder zur Definition eines Rechteckobjektes im Film.

Tabelle 3: Der RECT Datentyp im SWF-Fileformat
Datenfeld Datentyp Erklärung
NBits UB[5] = nBits Anzahl Bits in den folgenden Feldern
Xmin SB[nBits] X-Minimum Position des Rechtecks
Ymin SB[nBits] Y-Minimum Position des Rechtecks
Xmax SB[nBits] X-Maximum Position des Rechtecks
Ymax SB[nBits] Y-Maximum Position des Rechtecks


In der Datenstruktur RECT ist zunächst ein Feld von fünf Unsigned Bits enthalten. In diesem Feld wird festgelegt, wieviele Bits für die weiteren Datenfelder benötigt werden. So ist es möglich, die Bitlänge für unterschiedlich große Koordinaten variabel zu halten ohne spezielle Markierungen einzuführen, wann der nächste Koordinatenwert beginnt. Dies wird einfach über die vorher definierte Länge ermittelt.
So wie die RECT-Struktur werden auch weitere Strukturen definiert, auf die hier nicht näher eingegangen werden soll, weitere Informationen sind unter [Macr2001] zu erhalten.
Eine SWF Datei wird immer mit einem Dateiheader, der die Version des Flashfilmes, die Gesamtlänge der Datei, die Bildwiederholrate, Ausmaße des Filmes und die Gesamtanzahl der Schlüsselbilder enthält, eingeleitet (Tabelle 4).

Tabelle 4: Dateiheader eines Flashfilmes
Inhalt Datentyp Erläuterung
Signature UI8 Immer 'F'
Signature UI8 Immer 'W'
Signature UI8 Immer 'S'
Version UI8 Flashversion (z.B. 0x04 für SWF4)
FileLength UI32 Länge der gesamten Datei
FrameSize RECT Framegröße in TWIPS (siehe auch Tabelle 3)
FrameRate UI16 Bildwiederholrate: Frames pro Sekunde
FrameCount UI16 Anzahl der Frames im Flashfilm


Nach diesem Header folgen dann die weiteren Tags, die Objekte definieren oder verändern. Eine schematische Abbildung der Dateistruktur ist in der Grafik gif zu sehen.


Abbildung 3: Dateistruktur einer SWF-Datei

Im SWF-Format wird das Ende eines Tags nicht explizit angegeben, sondern durch die Längenangabe des Gesamttags ermittelt, die im sogenannten Recordheader codiert wird. Es werden zwei Recordheader unterschieden, welche für unterschiedliche Recordlängen zuständig sind. Der Basis Recordheader enthält als erstes auf einer Länge von zehn Unsigned Bits eine ID, das ist eine eindeutige Zeichenkette zur Identifikation des Objektes, und in den nächsten sechs Unsigned Bits die Gesamtlänge des Tags. Dieser Header ist für Tags bestimmt, deren Gesamtlänge 63 Byte nicht überschreitet (Tabelle 5).


Tabelle: Recordheader für Tags, die eine Gesamtlänge von 63 Byte nicht überschreiten
Inhalt Datentyp Erläuterung
Tag 10 Unsigned Bit ID des Tags
Länge 6 Unsigned Bit Länge des ges. Tags


Sollte ein Tag länger sein, so wird zwischen der ID und der codierten Länge ein sechsstelliger Unsigned Bit Code mit dem Wert 0x3F eingefügt. Dieser signalisiert, daß die codierte Länge in diesem Header im Wertebereich einer Unsigned Integer liegen kann (Tabelle 6).


Tabelle: Recordheader für Tags, die eine Gesamtlänge von 63 Byte überschreiten
Inhalt Datentyp Erläuterung
Tag 10 UI ID des Tags
Kodierung für einen langen Recordheader 6 UB immer 0x3F
Länge 6 UI Länge des gesamten Tags


Die ID des Tags, welche im Recordheader angegeben wird, dient der Ermittlung, welche Art von Objekt folgen wird. Im folgenden soll gezeigt werden, wie eine Action im SWF-Dateiformat definiert ist. Als erstes wird das DoAction-Tag in der Tabelle 7 angegeben.


Tabelle 7: Struktur des DoAction-Tags
Inhalt Datentyp Erläuterung
Header RECORDHEADER Tag-ID=12 (siehe auch die Tabellen 5 und 6)
Actions ACTIONRECORD[0 oder mehr] Verschiedene Actions
ActionEndFlag UI8 immer der Wert ,,0 ``


In der Tabelle 8 wird der Datentyp ACTIONRECORD, der die eigentliche Definition der Aktion enthält, angegeben. Als Beispiel soll hier das ActionGetURL-Tag vorgestellt werden, mit dem innerhalb eines Flashfilmes zu einer Webseite gesprungen werden kann.

Tabelle 8: Struktur des ActionGetURL-Tags
Inhalt Datentyp Erläuterung
ActionCode UI18 Code der Action, hier 0x83 für ActionGetURL
Length UI16 Länge des Records
URLString STRING Adresse zu der gesprungen werden soll
TargetString STRING Angabe wo die Adresse dargestellt werden soll


Alle weiteren Definitionen können den Formatspezifikationen [Macr2001] entnommen werden und sind hier nicht näher aufgeführt, da sie eine sehr komplexe Struktur besitzen und hier lediglich der grundlegende Aufbau von SWF-Tags dargestellt werden soll.


prev up next