Flash und Datenbanken: Nichts einfacher als das!
Auch Flash-Gestalter möchten nicht auf dynamische, Datenbank-gestützte Sites verzichten, die bei jedem Zugriff mit frischen Informationen versorgt werden oder sich vom Site-Besucher gleich selber mit den gewünschten Daten anreichern lassen. Flash enthält zwar eine umfassende Programmierumgebung, eigentliche Datenbankzugriffsfunktionen sind im Sprachschatz von ActionScript aber nicht enthalten.
Dafür bietet Flash eine fast schon unverschämt simple Möglichkeit, Daten mit externen Scripts und Applikationen auszutauschen: Der gute alte, seit den CGI-Urzeiten bekannte Mechanismus mit Variablen, die der Absender - in diesem Fall das Flash-Movie - beim Aufruf einer ausführbaren Datei an diese übergibt beziehungsweise als Resultat der Ausführung zurückerhält, funktioniert in den letzten paar Versionen anstandslos auch in Flash.
Die folgenden zwei Beispiele demonstrieren das grundlegende Vorgehen in der ActionScript-Syntax von Flash 5, die mit ihrer grossen Ähnlichkeit zu JavaScript wesentlich moderner und letzten Endes bequemer zu handhaben ist als die vorher gebräuchliche Slash-Notation. Der Upgrade auf die neueste Flash-Version empfiehlt sich auch wegen der stark verbesserten Oberfläche und weiteren attraktiven Features. Es mag sein, dass die installierte Browserbasis noch stark auf Flash 4 konzentriert ist; aber jede neue Flash-5-Site ist für den Surfer ein Anstoss, seinen Flash-Player ebenfalls auf den neuesten Stand zu bringen.
Der einfache Fall: Das Einlesen einer Textdatei
Die simpelste Variante, externe Informationen in einem Flash-Movie zu präsentieren, ist das Einlesen und Anzeigen eines Textfiles. Wie der eigentliche Datenbankzugriff, den wir im zweiten Beispiel zeigen werden, basiert auch die Verarbeitung von Textdateien in Flash auf der Kommunikation über Variablen:
So heisst der ActionScript-Befehl, mit dem sich Daten zwischen Flash und externen Quellen übermitteln lassen. Das Verfahren ist im Grunde simpel, birgt jedoch einige Tücken, die ohne prinzipielles Verständnis der ablaufenden Vorgänge zu hartnäckigen, oft "unerklärlichen" Fehlern führen. Einige wichtige Punkte:
• URL: dieser Parameter gibt die externe Datenquelle an und ist im gewohnten Internet-URL-Format anzugeben. Befindet sich die Datei also im gleichen Verzeichnis wie das Flash-Movie, wird nur der Dateiname benötigt. Andernfalls muss die volle relative oder absolute URL angegeben werden, zum Beispiel http://www.derandereserver.com/dertext.txt
• Die Art des Objekts, das sich hinter der URL verbirgt, spielt keine Rolle. Einziges Kriterium: Das Resultat, das von dem Objekt an Flash zurückgegeben wird, muss eine Zeichenkette im MIME-Format application/x-www-urlformencoded sein, dem Standardformat, in dem Daten von und zu CGI-Scripts übermittelt werden. Es wird auch Variable-Value-Format genannt.
• Das einfachste Objekt, das einen Variable-Value-String liefert, ist ein Textfile, das die Zeichenkette schlicht und einfach enthält - mit loadVariables wird automatisch der gesamte Inhalt des Textfiles in die Flash-Variablen übertragen, die im Text spezifiziert sind. Aber auch sämtlicher ausführbarer Programmcode, der auf einem Webserver läuft und als Resultat einen korrekten Variable-Value-String ausgibt, ist als URL denkbar. Beispiele sind CGI-, ASP-, JSP- und PHP-Scripts.
• Der ActionScript-Befehl enthält keinerlei Informationen, welcher Text in welche Variablen übertragen werden soll. Die gesamte Beziehung zwischen Variablennamen und Inhalten wird durch den eingelesenen Text selbst bestimmt. Flash kann also nicht irgendwelche Textfiles einlesen, sondern nur solche, in denen mindestens ein Variable-Value-Paar definiert ist.
• Ziel: Dieser Parameter gibt den Flash-Level an, in den die eingelesenen Variablen geladen werden sollen. Er ist nicht obligatorisch; um sicher zu gehen, sollte man ihn aber stets spezifizieren. In einfachen, nicht verschachtelten Beispielen empfiehlt sich die Angabe von Level Null.
• Der loadVariables-Befehl arbeitet asynchron: Das Flash-Movie läuft sofort nach dem Aufruf des Befehls weiter und wartet nicht, bis das Textfile vollständig eingelesen wurde. Es empfiehlt sich deshalb, eine kleine Animationssequenz einzubauen, die den Benutzer über den Ladevorgang informiert. Den erfolgreichen Abschluss von loadVariables kann man daran überprüfen, ob die letzte einzulesende Variable etwas enthält. Ist sie nicht definiert oder leer, spielt man die Loader-Animation nochmals ab; nach dem Abschluss verzweigt man zu dem Frame, in dem der Text angezeigt werden soll. Es geht zwar auch ohne Loader-Animation - aber dann dauert es unter Umständen einige Zeit, bis der Surfer den Inhalt tatsächlich zu sehen bekommt, oder es werden zunächst alte Daten von einem früheren Durchlauf angezeigt.
• Wie kommt der Text zur Anzeige? Ganz einfach: Flash füllt ein dynamisches Textfeld, das im Instance-Panel mit einem Variablennamen verknüpft ist, automatisch mit dem Inhalt dieser Variablen. Schriftart, Farbe, Stil und Grösse entsprechen den Spezifikationen des Textfelds, oder sie werden über HTML-Befehle im Text definiert: Flash 5 unterstützt in dynamischen Textfeldern einen eng begrenzten Satz von HTML-Tags.