Flash 5 - Teil 3

Transcrição

Flash 5 - Teil 3
Auszug aus
Dieses Buch liegt vollständig als PDF vor,
aufgeteilt in vier Kapitel.
Das ist der dritte Teil.
Flash 5
ISBN 3-89842-100-7
gedruckt nicht mehr lieferbar
Ein Service von
von Sascha Wolter
Galileo Design
Ende Juni
lieferbar
Sascha Wolter,
Saban Ünlü
Buchcover mit Weblink
Flash MX
Grundlagen und Praxiswissen
DAS Standardwerk gibt es jetzt in einer
verbesserten und erweiterten Auflage
zu Flash MX. Sascha Wolter und Saban
Ünlü wenden sich mit diesem übersichtlich und ansprechend vierfarbig
gestalteten Buch an Ein- und
Aufsteiger, die sich nicht nur mit den
Grundfunktionen beschäftigen möchten. Neben einer umfangreichen
Einführung in Flash und zahlreichen
Praxisbeispielen bietet der Band auch
einen Überblick über weiterführende
und komplexere Themen wie Pop-upMenüs, Preloader, Sounds, Effekte,
Java, JavaScript, Generator, HTML
sowie 3D.
Dies und eine Übersicht rund 150 weiterer Produkte zum Thema Flash
machen das Buch auch zu einem
unentbehrlichen Nachschlagewerk für
fortgeschrittene Entwickler. Eine leicht
verständliche Einführung in
ActionScript rundet das Buch ab.
Galileo Design
ca. 400 S., 4c, mit CD, 44,90 Euro
ISBN 3-89842-220-8
Ende August
lieferbar
Sascha Wolter
ActionScript
Buchcover mit Weblink
Codedesign und
Objektorientierung
Sie möchten mehr als die Grundlagen
von ActionScript verstehen? Und
möchten in die Tiefen von ActionScript
eintauchen und mit Flash bis an die
Grenzen des Möglichen gehen?
Sascha Wolter zeigt Ihnen praxsinah
und anwendungsorientiert, wie Sie mit
Hilfe professioneller Programmierung
beeindruckende Projekte durchführen
und Ihren Workflow verbessern. Sie
erfahren, wie Sie in Flash bereits vorhandene Objekte nutzen und eigene
erstellen. Neben der Objektorientierung widmet sich der Autor in nachvollziehbaren Schritten den Themen
Konzeption, Teamarbeit und
Fehlersuche.
Ein unverzichtbares Handbuch beim
Einsatz von ActionScript!
Galileo Design
ca. 400 S., 4c, mit CD, 44,90 Euro
ISBN 3-89842-221-6
Sascha Wolter
Sascha Wolter
Flash 5
Mit ActionScript und Generator
.
.
Orientierung
Um Ihnen beim Lesen die Orientierung zu erleichtern und ein besonderes Lesevergnügen
zu ermöglichen, haben wir für unsere Reihe
Galileo Design ein spezielles Layout entwikkelt.
Durch visuelle Hilfen wurde der Text in
Funktionseinheiten gegliedert:
Durch das farbige Registersystem ist es Ihnen ein Leichtes, auf die einzelnen Kapitel
und Teile des Buchs zuzugreifen.
In Blau gehaltene Texte beinhalten Zusatzinformationen, Denkanstöße oder besondere
Hinweise.
Texte mit roten Überschriften kennzeichnen
Beispiele bzw. Schritt-für-Schritt-Anleitungen.
Bitte beachten Sie auch die Webseiten des
Verlags unter www.galileodesign.de, auf denen
Sie als registrierter Käufer dieses Buchs u.a. ein
Glossar, eine kommentierte Linkliste und eine
Tabelle mit Tastaturkürzeln finden.
Spezielle Symbole in der Marginalspalte machen auf besonders wichtige Textstellen aufmerksam:
Achtung-Icon
Diese Abschnitte sprechen eine Warnung aus.
Tipp-Icon
Hier verraten unsere Autoren Tipps und Tricks
zur Erleichterung Ihrer Arbeit.
Hinweis-Icon
Weiterführende Hinweise werden Ihnen so
nahe gebracht.
Step-Icon
Step-by-Step können Sie unsere Beispiele
nachvollziehen.
5
.
.
Inhalt
8 Vorwort
60 Anwendungen
62 Erstellen und Modifizieren
10 Grundlagen
106 Zeitleiste, Ebenen und Szenen
12 Die erste Animation
116 Gruppen, Symbole und Instanzen
16 Inspiration
130 Animation
24 Was ist Flash?
140 Aktionen und Interaktivität
28 Versionen
160 Sound
34 Eine kurze Einführung
174 Importieren und Exportieren
184 Veröffentlichen
208 Player und Projektor
6
Inhalt
.
212 ActionScript
214 Grundlagen
294 Für Fortgeschrittene
296 3D-Animation
222 Versionen
312 HTML
226 Flashdetection
324 ActiveX
234 Preloader
338 JavaScript
242 Filmsequenzen
346 Java
256 Oberflächenelemente
352 Flash und Video
262 Funktionen und Objekte
356 Macromedia Director
270 Formulare und Datenbanken
368 Bildschirmschoner
278 Flashprinting SDK
372 Das Flash Open File Format
282 Spiele
382 SWFs dynamisch generieren
290 Fehlersuche
398 Anhang
400 Hilfe
406 Tastenkombinationen
408 Ostereier
410 Die CD-ROM zum Buch
412 Index
Inhalt
.
7
Vorwort
8
Für wen wurde dieses Buch
geschrieben?
Warum habe ich dieses Buch
geschrieben?
Dieses Buch richtet sowohl an den ambitionierten Einsteiger als auch an den fortgeschrittenen Entwickler
Entwickler: Hauptsache, es ist Interesse
für Macromedia Flash vorhanden.
Für Menschen, die gerne mit einem Handbuchersatz arbeiten und grundlegende Funktionen ausführlich erklärt haben möchten, ist
dieses Buch nicht geeignet. Auch finden Sie
hier keine Anleitungen, mit deren Hilfe ohne
Mitzudenken Effekte nachgebaut werden können.
Der Schwerpunkt dieses Buches ist,
왘 Ihnen alle Möglichkeiten von Flash zu zeigen,
왘 Ihnen zu erklären, warum manche Dinge so
sind, wie sie sind,
왘 und Ihnen zu jedem erdenklichen Thema
Hilfestellung zu geben.
Ich habe versucht, dieses Buch so zu erstellen, dass es sich sowohl als Lehrbuch als auch
als Nachschlagewerk eignet. Sie können dieses
Buch sowohl von vorne nach hinten durcharbeiten als auch nur einzelne Themen nachschlagen.
Ob Sie dabei lieber unter Windows- oder
auf Macintosh-Computern arbeiten, ist unerheblich. Zwar sind die meisten Abbildungen
unter Windows erstellt worden, doch wir gehen auf die wenigen Unterschiede zwischen
der Windows- und Macintosh-Version immer
ein.
Meine Absicht war, ein Buch zu schreiben, das
nicht nur die Grundlagen vermittelt, sondern
sich ausdrücklich auch an den professionellen
Entwickler richtet. Ich habe in diesem Buch all
das zusammengetragen, was ich bei der Arbeit
mit Flash brauche, aber nicht immer im Kopf
parat habe: Selber nutze ich das Buch fast täglich als Nachschlagewerk.
Weitere Informationen zu diesem Buch,
Beispiele, Diskussionsforen und Neuigkeiten
finden Sie auf meiner Website www.
flashforum.de. Um dieses Buch zu verbessern,
bin ich auf Ihre Anregungen angewiesen: Kritik
können Sie an [email protected] senden.
Über positive Bemerkungen freue ich mich natürlich auch.
Bitte beachten Sie besonders auch die Webseite des Verlages unter www.galileo-press.de.
Hier können Sie sich mit Ihrer persönlichen
Servicenummer, die Sie auf der hinteren Umschlagseite finden, einloggen. Auf der Seite
zum Buch liegen für Sie Zusatzkapitel und weitere Informationen bereit.
Vorwort
.
Danksagung
Für die gute Zusammenarbeit bei der Erstellung dieses Buches bedanke ich mich bei meiner Lektorin Ruth Wasserscheid und bei Martin
Riefenstahl von Macromedia, ohne den dieses
Buch niemals entstanden wäre. Für Kritik und
Anregungen sowie zahlreiche Grafiken bedanke ich mich ganz besonders bei Sandra Osterholz.
Ausdrücklich möchte ich mich auch bei allen Lesern des vorigen Flash-Buches für die
überwältigende Resonanz bedanken, die ganz
wesentlich zur Entstehung dieses Buches beigetragen hat.
Sascha Wolte
Wolter
Düsseldorf, im November 2000
Vorwort
.
9
ActionScript
214 Grundlagen
234 Preloader
214 Ursprung
234 Was ist Streaming?
215 Bestandteile
234 Strategien für Preloader
217 ActionScript-Editor
235 Abwarten
239 Anzeige des Fortschritts
222 Versionen
240 Preloader ohne ActionScript
222 Ältere SWF-Formate erstellen
242 Filmsequenzen
226 Flashdetection
227 Erkennung mit Skript
228 Erkennung ohne Skript
242 Steuern von Filmen und Filmsequenzen
246 Eigenschaften, Methoden und
Variablen
251 Objektaktionen
253 Smart Clips
212
ActionScript
.
256 Oberflächenelemente
256 Checkboxen
278 Flashprinting SDK
279 Drucken mit ActionScript
256 Fenster und Drag and Drop
257 Menüs
282 Spiele
283 Spieleentwicklung mit Flash
262 Funktionen und Objekte
284 Steuerung von Objekten
262 Funktionen
286 Kollisionskontrolle
265 Objekte
288 Objekte dynamisch erzeugen
289 Punktezählung
270 Formulare und Datenbanken
271 Felder und Formulare
290 Fehlersuche
272 CGI-Kommunikation
291 Ausgabefenster
275 XML
291 Debugger und Watcher
ActionScript
Grundlagen
.
213
Grundlagen
Was ist eigentlich ActionScript?
Um ActionScript zu erlernen, sind einige grundsätzliche Konzepte nötig. In diesem Kapitel wird
versucht, Ihnen die Idee der Sprache ActionScript
näher zu bringen.
왘
Da es sich bei
dem ActionScript in
Flash 5 um
eine neue
Technologie
handelt, finden Sie aktualisierte Informationen und
Tutorials auf
meiner Website www.
flashforum.de!
214
Das Ziel dieses Kapitels ist nicht, Ihnen alle
Befehle, Funktionen und Eigenschaften von
ActionScript zu erläutern: Dies ist in dem von
Macromedia gelieferten, knapp 500 Seiten
starken »ActionScript Referenzhandbuch«
recht ausführlich geschehen (in Flash finden
Sie dieselben Informationen unter Hilfe •
ActionScript Referenz und Hilfe • ActionScript Lexikon). Dieses Kapitel kann auch keine komplette (eigentlich notwendige) Einführung in die Grundlagen der Programmierung
geben, hierzu gibt es schon eine ganze Reihe
Bücher. Sie haben meistens einen Titel wie
»Grundlagen der Informatik«, »Grundlagen der
Programmierung« oder »Grundlagen der Softwaretechnik«.
Nachdem Sie nun wissen, worum es in diesem Kapitel nicht geht, fragen Sie sich sicherlich, was es behandelt. Ganz einfach: In diesem Kapitel lernen Sie alles, was Sie brauchen,
um mit ActionScript zu arbeiten. Falls Sie ein
Programmierer sind, profitieren Sie nicht nur
von den Praxisbeispielen, sondern in erster Linie von den hier erläuterten Konzepten. So
fällt es Ihnen leichter, Ihre Programmierkenntnisse auf ActionScript zu übertragen. Falls Sie
keine Programmiererfahrung haben, versucht
dieses Kapitel Ihnen die Angst vor der Programmierung zu nehmen. Mit einem Minimum
an Verständnis für die Konzepte können Sie
anhand der Beispiele erste Erfahrungen mit
ActionScript sammeln und eigene Skripts
schreiben. An manchen Stellen – wie z. B. beim
Preloader und bei Spielen – zeigt Ihnen dieses
Kapitel darüber hinaus, dass viele Effekte auch
ohne Programmierung oder zumindest mit
sehr wenig auskommen.
Ursprung
Erst in der vierten Version von Flash wurden
die bis dahin recht überschaubaren so genannten Aktionen zur Sprache ActionScript erweitert. Bis dahin mussten sich die Entwickler mit
einfachen Aktionen zufrieden geben.
Aktionen
Auch wenn sich die Programmiersprache von
Flash in der aktuellen Version grundlegend geändert hat, ist die Idee der Aktionen bis nach
Flash 5 gerettet worden. Bei den Aktionen
handelt es sich um »Verhalten«, die Sie in einzelnen Bildern oder auf Schaltflächen platzieren können.
Der Vorteil der Aktionen ist, dass Sie nur
wenige Kenntnisse benötigen, um sie anzuwenden. Alle notwendigen Angaben, die so
ActionScript
.
genannten Parameter oder Argumente für eine
Aktion, werden einfach in einer Art Formular
eingetragen.
In Flash 5 können Sie immer noch so wie in
den Vorgängerversionen mit Aktionen arbeiten. Dafür verwenden Sie im ActionScript-Editor am besten den normalen Modus. In diesem
Modus finden Sie die meisten der alten Aktionen unter dem Punkt Basisaktionen.
ActionScript
Mit Flash 4 hat Macromedia die Sammlung
verschiedener Aktionen als ActionScript bezeichnet. Hierbei handelt es sich um eine einfache Sprache, deren Aufbau weder der Programmiersprache Lingo aus dem Macromedia
Director noch einer anderen bekannten Sprache entspricht. Am ehesten kann man das alte
ActionScript als eine Mischung aus Perl, JavaScript und Aktionen beschreiben, die sich
nicht in einem Editor eingeben, sondern nur
zusammenklicken lässt. Wesentliche Elemente
einer Programmiersprache wurden in Flash 4
das erste Mal umgesetzt: Variablen, um Werte
zu speichern, und Kontrollstrukturen, um den
Ablauf eines Skripts zu steuern.
In Flash 5 hat Macromedia die eingebaute
Programmiersprache erneut »umgemodelt«.
Bei ActionScript handelt es sich um eine »vollwertige« Programmiersprache inklusive aller
hierfür erforderlichen Elemente. Der Begriff
Aktion ist in Flash 5 deutlich erweitert und bezeichnet jetzt eine ganze Menge an Befehlen
und Anweisungen.
Die Struktur von ActionScript entspricht
jetzt JavaScript. Obwohl das so auch nicht
stimmt, denn eigentlich entspricht die Struktur
dem ECMA-262-Standard. Dieser ist aber im
Wesentlichen aus JavaScript entstanden und
von einer unabhängigen Organisation verfasst
worden. Die Ähnlichkeit geht so weit, dass
sich teilweise sogar ganze JavaScripts eins zu
eins nach Flash 5 übertragen lassen.
Macromedia hat aber versucht, ActionScript
auch in der fünften Flash-Version für NichtProgrammierer anwendbar zu halten. Es gibt
einen normalen Modus, der die wichtigsten
Aktionen (die so genannten Basisaktionen) bereitstellt. Hier verhält sich Flash ähnlich wie die
Vorgänger. Diese Basisaktionen lassen sich mit
den neuen Funktionen beliebig mischen, so
dass der Einsteiger Schritt für Schritt das Programmieren erlernen kann.
Bestandteile
Wie jede Sprache besitzt auch eine Programmiersprache einige Regeln und Konzepte, an
die es sich zu halten gilt. Im Gegensatz zu realen Sprachen bieten Programmiersprachen weniger Freiraum in den Formulierungen: Sie
müssen sich an die Regeln halten! Da die Regeln aber deutlich überschaubarer sind als im
realen Leben, ist das normalerweise kein allzu
großes Problem. Sie sollten sich immer nur
bewusst machen, dass der Computer nicht
weiß, was Sie erreichen möchten, und darum
ECMA-262
ActionScript orientiert sich an dem ECMA-262Standard (dem ECMAScript), einer von der
ECMA (European Computer Manufacturers
Association) verfassten Spezifikation (www.
ecma.ch), die von Skriptsprachen wie JavaScript und JScript (Microsofts JavaScript-Variante) abgeleitet ist. Die Beschreibung des
ECMA-262-Standards finden Sie auch auf der
CD-ROM zum Buch.
Grundlagen
.
215
alles ganz genau erklärt bekommen muss. Das
ist ähnlich wie die Geschichte mit der ersten
Tiefkühlpizza: Nur weil auf der Verpackung der
Satz »Vor dem Backen Plastikfolie entfernen«
fehlte, haben einige Pizzaliebhaber genau das
auch nicht gemacht. Genauso ist das beim
Computer: Der ist sehr dumm und denkt nicht
mit.
Da die Regeln von ActionScript denen von
JavaScript ähneln, hilft Ihnen ein gutes JavaScript-Buch kombiniert mit Macromedias
ActionScript-Referenz und (hoffentlich) diesem
Buch mehr als ein schlechtes Buch über ActionScript. So begreifen Sie die Konzepte von Anfang richtig, Sie verstehen die Zusammenhänge
und erlernen nicht nur eine, sondern gleich
mehrere Sprachen. Und wenn dann mal eine
Aufgabe auf Sie zukommt, für die es kein fertiges Tutorial (Anleitung) gibt, dann ist auch das
kein Problem mehr für Sie!
Die erste Kategorie kann nur in Schlüsselbilder platziert werden. Für die Ausführung der
so genannten Bildaktionen gibt es nur ein Ereignis: Der Abspielkopf erreicht das gewählte
Bild. Das Ereignis wird hier für die Aktionen
nicht explizit angegeben.
Die zweite Kategorie wurde bis Flash 5 als
Instanzaktionen bezeichnet und heißt jetzt
Objektaktionen
Objektaktionen. Normalerweise werden Objektaktionen auf eine Schaltfläche platziert. Im
Gegensatz zu Bildaktionen stehen hier eine
ganze Reihe von Ereignissen zur Auswahl, die
von Ihnen angegeben werden müssen. Diese
Ereignisse beziehen sich alle auf Benutzerinteraktionen, also auf Aktivitäten, die der Anwender durchführt. Dazu zählen das Drücken
einer Taste oder das Anklicken der Schaltfläche. bei ereignis führe aktionen aus sieht
in ActionScript dann wie folgt aus:
Ereignisse
Bei ActionScript handelt es sich um eine ereignisgesteuerte Sprache. Das bedeutet, dass ein
Ereignis eintreten muss, damit etwas passiert
und eine Aktion ausgeführt wird: »Wenn zwölf
Minuten vorbei sind (Ereignis), dann nehme
die Pizza aus dem Ofen (Aktion)«. Kochrezepte
müssen häufig als Beispiele für die Programmierung herhalten. Ich hoffe, Sie kochen gerne!
In Flash gibt es jetzt eine ganze Menge solcher Ereignisse, die sich grob in zwei Kategorien unterteilen lassen:
왘 Zeit- oder bildabhängige Ereignisse (Bildaktionen)
왘 Ereignisse im Zusammenhang mit Benutzerinteraktionen (Objektaktionen)
}
on ( ereignis
ereignis) {
aktionen
aktionen;
216
Abgesehen von den gerade beschriebenen,
schon in früheren Flash-Versionen vorhandenen, Ereignissen für Schaltflächen gibt es in
Flash 5 noch weitere Möglichkeiten. Sie können Objektaktionen nicht nur auf Schaltflächen, sondern auch auf Filmsequenzen anwenden, wofür noch weitere Ereignisse bereitstehen. Mit diesen Ereignissen kann auf das
Drücken oder Loslassen einer Taste, das Laden
von Daten, einen Bildwechsel oder das Bewegen der Maus reagiert werden. Die Struktur
der Skripts entspricht denen bei Schaltflächen:
onClipEvent ( ereignis
ereignis) {
aktionen
aktionen;
}
ActionScript
.
Aktionen, Anweisungen und Befehle
Mit Aktionen, Anweisungen oder Befehlen wird
meist dasselbe gemeint: Hierbei handelt es sich
um die Einzelschritte, die der Computer in
Ihrem Programm ausführen soll. Dabei kommt
es darauf an, die richtigen Befehle in der richtigen Reihenfolge anzuwenden. Ein Programm ist
also nichts anderes als ein Kochrezept, bei dem
ebenfalls nur präzise und in der richtigen Reihenfolge formulierte Schritte zu einem gelungenen Gericht führen. Die meisten Aktionen benötigen darüber hinaus noch Parameter (auch
Argumente genannt). Diese Parameter spezifizieren die Wirkung einer Aktion genauer. Wenn
Sie z. B. eine Aktion verwenden, um in ein spezielles Bild des Films zu springen, dann benötigen Sie die Aktion (in diesem Fall Go To ) und ein
Ziel (also das Bild, in das gesprungen werden
soll). Bei einem Kochrezept ist das wieder ähnlich. Auch hier brauchen Sie bei einer Aktion,
wie z. B. dem Hinzufügen, die genaue Angabe
dessen, was hinzugefügt werden soll (z. B. drei
Eier).
In Flash 5 gibt es aber eine ganz wesentliche
Änderung zu den vorherigen Versionen von
ActionScript (die alte »Schreibweise« kann
aber noch weiter verwendet werden)! Wie bei
JavaScript werden die Aktionen jetzt als Methoden auf Objekte angewendet. Das Hinzufügen aus dem Kochrezept muss ja zielgerichtet
geschehen. Nach der alten Schreibweise hätte
man wahrscheinlich fuegehinzu(schuessel, 3
Eier) geschrieben. In der neuen (und konsistenteren) Schreibweise heißt es schuessel.
fuegehinzu(3 Eier) . Grundsätzlich ist eine Aktion in den meisten Fällen nach dem Schema
objekt
methode
parameter
objekt.methode
methode(parameter
parameter) aufgebaut.
Wenn Sie mehrere aufeinander folgende
Aktionen verwenden möchten, dann sollten
diese zeilenweise angegeben und jeweils mit
einem Semikolon abgeschlossen werden. Die
Reihenfolge der Aktionen ist nämlich wichtig,
da sich die Aktionen gegenseitig beeinflussen
können.
Weitere Elemente von ActionScript
ActionScript besteht aber nicht nur aus Ereignissen und Aktionen. Es gibt noch weitere
wichtige Elemente, die auf den folgenden Seiten in Beispielen erläutert werden.
ActionScript-Editor
Bei der Arbeit mit ActionScript werden Sie
nicht um den Editor für ActionScripts herumkommen, den Sie unter Fenster • Aktionen
finden.
In den vorherigen Flash-Versionen war dieser Editor recht unkomfortabel, so dass einige
Hilfsmittel zur Erstellung von ActionScripts in Flash 4
Produkt
Hersteller
URL
Preis
Bemerkung
Fast!
Grooveware
Multimedia
www.swifftools.com/stools/
Beta
Externer Editor
FlaSE
Martin Fleck
www.flashtool.de/docs/flase/flase.htm
DM 29,00
Externer Editor
»Boblgum
Patch«
»Boblgum«
www.flashworker.de oder www.mysterion.de
kostenlos
Vergrößert das
ActionScript-Fenster
Grundlagen
.
217
➊
➎
➋
➌
➍
➏
➐
왖
Abbildung 1
Bedienfeld Aktionen im normalen Modus
Alternativen entwickelt wurden, um die Erstellung von ActionScripts zu erleichtern.
Der stark verbesserte ActionScript-Editor in
Flash 5 verhält sich wie andere Bedienfelder
auch. Das Fenster ist skalierbar, lässt sich mit
anderen Bedienfeldern wie z. B. dem Film-Explorer kombinieren und besitzt oben rechts ein
Menü für weitere Optionen. In diesen Optionen stehen zwei Modi zur Verfügung:
왘 Normaler Modus
왘 Expertenmodus
Mit dem Editor erzeugen Sie abhängig von
der aktuellen Auswahl (Bild oder Objekt) entweder Bildaktionen oder Objektaktionen
Objektaktionen. Falls
Sie ein Schlüsselbild ausgewählt haben, dann
erzeugen Sie ein ActionScript, das beim Erreichen dieses Bildes ausgeführt wird. Handelt es
sich um ein Objekt (also die Instanz eines
Schaltflächensymbols oder eines Filmsequenzsymbols), dann erstellen Sie Aktionen, die mit
diesem Objekt verbunden sind. Zur Ausführung der Aktionen wird ein Ereignis benötigt,
das in dem Skript über einen so genannten
218
왖
Abbildung 2
Bedienfeld Aktionen im Expertenmodus
Handler (engl. Bearbeiter), z. B. on (release) ,
festgelegt wird.
Normaler Modus
Um den ActionScript-Editor benutzen zu können, müssen Sie entweder ein Schlüsselbild in
der Zeitleiste, eine Schaltfläche oder eine Filmsequenz auf der Bühne auswählen. Das Bedienfeld Aktionen zeigt abhängig von der Auswahl entweder nichts, den Text »Bildaktionen«
oder »Objektaktionen« im Titel ➋ an. Wenn
nichts angezeigt wird, können auch keine Aktionen eingegeben werden, da kein zulässiges
Objekt oder Schlüsselbild gewählt ist.
Der normale Modus des Bedienfeldes Aktionen wurde bereits im Kapitel »Aktionen
und Interaktivität« auf Seite 141 behandelt. Er
bietet Ihnen alle Werkzeuge, die Sie brauchen,
um Ihre ActionScripts zu erstellen. Entweder
Sie wählen eine der zahlreichen Aktionen über
die Plus-Schaltfläche ➊ oder in der Werkzeugliste ➍ auf der linken Seite. Die Werkzeugliste
lässt sich ein- und ausblenden ➎.
ActionScript
.
Die Aktionen sind in Kategorien geordnet: Die
Kategorie Basisaktionen steht allerdings nur
im normalen Modus zur Verfügung.
왘 Basisaktionen: Hier finden Sie die wichtigsten Aktionen, die weitestgehend die Möglichkeiten der vorhergehenden Flash-Versionen abdecken. Diese Aktionen finden
sich auch in der Kategorie Aktionen.
왘 Aktionen: Hier sind alle Aktionen zusammengefasst, die Flash versteht. Nur die Aktionen, die sich auf spezielle Objekte beziehen, finden Sie in der Kategorie Objekte.
왘 Operatoren: Hier finden Sie die benötigten
Operatoren, wie z. B. das Pluszeichen, um
Berechnungen durchzuführen oder Zeichenketten miteinander zu verbinden.
왘 Funktionen: Falls Sie Funktionen benötigen, dann finden Sie diese in der gleich lautenden Kategorie.
왘 Eigenschaften: In dieser Kategorie wählen
Sie die Eigenschaften, die einen kompletten
Flash-Film oder eine Filmsequenz auszeichnen.
왘 Objekte: In Flash 5 gibt es fünfzehn Objekte, die jeweils spezifische Aktionen bieten.
Darunter sind Aktionen, die sich auf XML,
auf Datum und Uhrzeit, auf Filmsequenzen
und auf den Mauszeiger beziehen.
Falls Sie einmal gewählte Aktionen wieder
entfernen möchten, wählen Sie die MinusSchaltfläche. Die Reihenfolge der Aktionen
verändern Sie über die Auf- und Ab-Schaltfläche ➌.
Eine Besonderheit des normalen Modus ist,
dass die notwendigen Parameter für Aktionen
im Parameterbereich ➏ angegeben werden.
Dies erleichtert die Eingabe und verhindert fehlerhafte Aktionen. Falls Sie für eine Aktion eine
Filmsequenz benötigen, dann können Sie diese
über die Schaltfläche Zielpfad ➐ auswählen.
Expertenmodus
Der Expertenmodus unterscheidet sich vom
normalen Modus durch folgende Punkte:
왘 Es existiert keine Kategorie mit Basisaktionen.
왘 Die Minus-Taste zum Entfernen von Aktionen sowie die Auf- und Ab-Tasten zum Ändern der Reihenfolge von Aktionen sind
deaktiviert.
왘 Der Parameterbereich fehlt. Die Parameter
werden direkt in der Aktionsliste eingetragen.
왘 ActionScripts lassen sich direkt eintippen
und müssen nicht »zusammengeklickt« werden.
Gerade die direkte Eingabe von Skripts hat
vielen Entwicklern bis Flash 5 gefehlt und ist
jetzt endlich möglich. Auch bei direkter Eingabe können Aktionen durch Auswahl in der
Werkzeugliste eingefügt werden.
Da es aber gerade im Expertenmodus häufig
zu fehlerhaften Eingaben kommt, ist in den
meisten Fällen die Verwendung des normalen
Modus vorzuziehen. Über einen kleinen Trick
ist auch hier das direkte Eintippen von Aktionen möglich: Verwenden Sie im normalen Modus die Aktion evaluate, die es Ihnen erlaubt,
eine Zeile beliebig einzutippen. Im Expertenmodus steht diese Aktion nicht zur Verfügung,
da sich hier ja sowieso direkt in der Aktionsliste tippen lässt.
Um die Eingabe sowohl im Experten- als
auch im normalen Modus zu beschleunigen
beschleunigen,
gibt es die so genannten Escape-Sequenzen,
mit denen sich Aktionen sehr effizient eingeben lassen. Bei einer Escape-Sequenz handelt
es sich um eine Tastenfolge, die mit (Esc) beginnt und der dann weitere Tasten folgen. Meistens müssen Sie die ersten beiden Buchstaben
der gewünschten Aktion tippen. Z. B. für die
Grundlagen
.
219
Aktion trace drücken Sie hintereinander (Esc),
(t) und (r)(siehe Seite 406).
Ein weiteres Argument für die möglichst
häufige Verwendung des normalen Modus ist
die automatische Formatierung von ActionScripts. Im Expertenmodus müssen Sie Einrükkungen und Zeilenumbrüche selbst vornehmen. Aber auch dafür gibt es einen Trick: Sie
können jederzeit zwischen dem Expertenmodus und dem normalen Modus über das
Optionsmenü oder die Tastenkombinationen
(Strg)/(ï)+(N) (N für normaler Modus) und
(Strg)/(ï)+(E) (E für Expertenmodus) wechseln. Wenn Sie ein Skript im Expertenmodus
eingegeben haben, wechseln Sie durch (Strg)/
(ï)+(N) in den normalen Modus, wo das
Skript dann formatiert wird. Mit (Strg)/(ï)+
(E) kommen Sie wieder zurück in den Expertenmodus. Diese Tastenkombinationen funktionieren aber nur, wenn das Bedienfeld Aktionen aktiviert ist. Der Modus wird für jedes
Skript unabhängig voneinander gespeichert:
Beim Wechseln zwischen verschiedenen
Skripts kann auch der Modus wechseln. Welchen Modus Sie beim Erzeugen eines neuen
Skripts vorziehen, geben Sie unter Bearbeiten • Einstellungen im Register Allgemein
an.
Kommentare
In der Dokumentation von Flash ist die Escape
Escape-Sequenz für Kommentare (Aktion comment) mit
(Escape), (/) und (/) beschrieben. Leider funktioniert das nicht bei einer deutschen Tastatur.
Hier müssen Sie (Escape), (#) und (#) eingeben.
220
Optionen
Das Bedienfeld Aktionen stellt eine ganze Reihe von Optionen zur Verfügung. Neben dem
Wechsel zwischen dem Normal- und dem
Expertenmodus ➊ dürfen Sie auch direkt in
eine beliebige Zeile des Skripts springen ➋, in
einem Skript suchen, Teile ersetzen und jederzeit die Syntax (also die korrekte Schreibweise)
Ihres Skripts überprüfen.
In Flash 5 lassen sich ActionScripts über die
Zwischenablage kopieren und in anderen Anwendungen bearbeiten. Auch das Importieren
➌ und Exportieren ist möglich. Falls Sie ein
Skript aber während der ganzen Entwicklung
extern halten möchten, z. B. weil es in mehreren Flash-Filmen benötigt wird, verwenden Sie
die Aktion #include anstelle des Imports. Natürlich lässt sich ein ActionScript auch drucken,
wobei Flash die farbliche Hervorhebung übernimmt, sofern Sie denn aktiviert ist.
Wenn die an sich ganz nützliche farbliche
Hervorhebung einzelner Schlüsselwörter nicht
auf Ihre Zustimmung stößt, dann deaktivieren
Sie in den Optionen Syntax farbig anzeigen.
Andernfalls stellt Flash Schlüsselwörter blau,
Eigenschaften grün, Kommentare violett und
Zeichenketten in Anführungszeichen grau dar.
Die Schriftgröße wählen Sie ebenfalls in den
Optionen. Leider kann die Schriftart aber nicht
variiert werden.
Innerhalb des Expertenmodus lassen sich
auch mehrzeilige Kommentare angeben, die
mit /* beginnen und mit */ enden müssen.
Beim Wechseln in den normalen Modus werden sie in mehrere einzeilige Kommentare geändert.
ActionScript
.
➊
➋
➌
왖
Abbildung 3
Die Optionen des Bedienfeldes Aktionen
Die Option Fehlerhafte Syntax anzeigen
hebt Aktionen, die nicht mehr empfohlen sind
(aber noch funktionieren), grün hervor.
Farbliches Hervorheben
Da Flash normalerweise Ihre Eingaben im
ActionScript-Editor farblich hervorhebt, können Sie direkt erkennen, ob Sie sich vertippt
haben oder nicht:
왘 Schlüsselwörter werden blau angezeigt.
왘 Eigenschaften sind grün.
왘 Kommentare werden violett hervorgehoben.
왘 Zeichenketten in Anführungszeichen werden grau dargestellt.
왘 Syntaxfehler markiert Flash rot.
Grundlagen
.
221
Versionen
… von Version 2 nach 5 oder umgekehrt!
Was hat sich in Flash 5 geändert, und was muss
ich beachten, wenn ich mit Flash 5 für eine ältere
Flash-Version entwickeln möchte? Wie erkenne
ich, welche Flash-Version der Betrachter installiert hat?
Mittlerweile gibt es – wie man unschwer
anhand der Versionsnummer vermuten kann –
schon die fünfte Ausgabe von Flash. Glücklicherweise hat Macromedia Flash in jeder Version kontinuierlich weiterentwickelt und verbessert. Leider benötigt man aber für die
jeweils neu eingeführten Funktionen zum Abspielen auch die passende Erweiterung des
Webbrowsers, die Flash Player oder FlashPlug-in genannt wird.
Um das Problem mit dem Plug-in zu lösen,
gibt es mindestens zwei Möglichkeiten:
왘 Sie können den kleinsten gemeinsamen
Nenner wählen und einen Flash-Film für
eine ältere Flash-Version entwickeln, also
z. B. mit Flash 5 einen Flash 4-Film erstellen.
왘 Mit einer Flashdetection (Flash-Erkennung)
überprüfen Sie, welche Flash-Version beim
Betrachter installiert ist, und zeigen ihm einen entsprechenden Inhalt an.
Ältere SWF-Formate erstellen
Es gibt mehrere Gründe
Gründe, die Sie zwingen könnten, trotz der Flash 5-Entwicklungsumgebung
einen Flash-Film im Flash 4-Format oder älter
zu erstellen. Wenn z. B. der Flash 5-Player bei
222
der Zielgruppe noch nicht weit genug verbreitet ist oder wenn Sie für ein eher konservatives
Unternehmen arbeiten, dann kann der Kunde
eventuell darauf bestehen. Auch falls Sie die
neuen Funktionen von Flash 5 gar nicht nutzen, ist es vernünftiger, in einem möglichst »alten« Flash-Format zu veröffentlichen, da Sie so
eine größere Menge an Betrachtern erreichen.
Kompatibilität
Was passiert aber, wenn ein Flash 4-Film von
einem Flash 5-Plug-in abgespielt wird oder
wenn ein Flash 4-Plug-in auf einen Flash 5Film stößt? Wie kompatibel sind die verschiedenen Versionen untereinander?
Grundsätzlich lässt sich diese Frage einfach
beantworten – aber wie immer mit einigen
Ausnahmen! Jeder Flash Player spielt normalerweise alle Flash-Filme der eigenen oder einer älteren Version ab. Umgekehrt funktioniert
das leider nicht. Ein älteres Plug-in ist nicht in
der Lage, einen neueren Flash-Film korrekt anzuzeigen. Eine Ausnahme ist, dass auch der
Flash 3-Player Flash 4-Filme abspielt, solange
diese keine speziellen Flash 4-Funktionen nutzen.
Falls Sie einen Flash 2-Film veröffentlichen,
wird dieser von allen Flash-Plug-ins seit Ver-
ActionScript
.
왘
sion 2 abgespielt. Das ist eine Reichweite von
mehr als 90 Prozent. Warum aber arbeiten Sie
dann mit Flash 5 und sind nicht bei Flash 2 geblieben? Ganz einfach: Die Entwicklungsumgebung von Flash 5 ist besser als die der Vorläuferversionen und bietet Ihnen bei der Arbeit
an einem Flash 2-, 3- oder 4-Projekt einfach
mehr Möglichkeiten.
왘
Abspielprobleme
Die Version 5 des Flash Players erzeugt gerade
im Zusammenspiel mit manchen älteren FlashFilmen nicht immer das gewünschte Ergebnis
(www.macromedia.com/support/flash/ts/
documents/player5_issues.htm). Folgende Probleme mit dem Flash Player 5 sind bekannt –
eine korrigierte Version (Release 36 oder höher) des Flash Players soll mit Erscheinen dieses Buches erhältlich sein:
왘 Bildrate (Abspielgeschwindigkeit): Flash 4Filme konnten maximal mit 18 Bildern pro
Sekunde abspielen (auch wenn sich höhere
Werte angeben ließen). Der Flash Player 5
versucht diese Filme mit der eingestellten
Bildrate abzuspielen, wodurch sie schneller
als erwartet laufen. Wenn Sie die Bildrate
auf einen Wert zwischen 15 und 18 korrigieren, sollte dies nicht mehr auftreten.
왘
왘
Systemressourcen (Prozessorauslastung): Da
Flash-Filme mit dem Flash Player 5 schneller
ablaufen können, benötigen Sie mehr Systemressourcen. Um den Prozessor zu entlasten, wählen Sie eine niedrigere Bildrate
zwischen 15 und 18 Bildern pro Sekunde.
Goto-Aktion funktioniert nicht mit Ausdrücken: Falls bei einer Goto-Aktion das erste
Zeichen einer Bildbezeichnung eine Zahl ist,
dann interpretiert Flash dies als Bildnummer. Um das zu verhindern, sollten Sie Bildbezeichnungen immer mit einem Buchstaben beginnen lassen. Dieses Problem soll in
einer zukünftigen Version des Flash Players
behoben werden.
Objekte und Variablen mit dem gleichen
Namen: Falls Sie Objekte (Filmsequenzen
etc.) und Variablen mit denselben Namen in
einem Flash-Film verwendet haben, kann
dies zu unerwarteten Ergebnissen führen.
Stellen Sie sicher, dass jeder Name für Variablen und Objekte eindeutig ist.
Bezeichner mit Sonderzeichen
Sonderzeichen: Vermeiden
Sie Sonderzeichen in Objekt- und Variablennamen, da dies zu unerwarteten Ergebnissen führen kann.
Kompatibilität
Film/Plug-in
Flash 2-Player
Flash 3-Player
Flash 4-Player
Flash 2-Film
Ja
Ja
Ja
Ja
Ja
Flash 3-Film
Nein
Ja
Ja
Ja
Ja
Flash 4-Film
Nein
Ja (keine Flash 4Funktionen
Ja
Ja
Ja
Flash 4-Film mit
Druckfunktion
Nein
Ja (keine Flash 4- Ja (Druckfunktion Ja
Funktionen
funktioniert nicht)
Ja
Flash 5-Film
Nein
Nein
Ja
Nein
Flash 4-Player ab
Dezember 1999
Nein
Flash 5-Player
Versionen
.
223
왘
왘
왘
왘
Textauswahlzeiger (engl. I-beam) ist nicht
sichtbar: In älteren Flash Playern wurde der
Textauswahlzeiger in der Textfarbe angezeigt. Im Flash 5-Player ist er schwarz. Dieses Problem soll in einer zukünftigen Version des Flash Players behoben werden.
Artefakte bei Texten
Texten: Es gibt verschiedene
Darstellungsprobleme bei Text. Einige lassen
sich lösen, wenn der Text von einer Box umrahmt wird. Dieses Problem soll in einer zukünftigen Version des Flash Players behoben werden.
Scroll
Scroll-Text springt immer an den Anfang zurück: Falls Sie Felder über die Eigenschaft
scroll steuern, springen diese immer wieder zurück an den Anfang, sobald neue Daten geladen werden. Dieses Problem soll in
einer zukünftigen Version des Flash Players
behoben werden.
Internet Explorer 5.5 stürzt ab: Der Internet
Explorer 5.5 kann abstürzen, falls ein FlashFilm in einer Tabellenzelle eingebettet ist
und vom Flash Player 5 abgespielt wird.
Dieses Problem soll in einer zukünftigen
Version des Flash Players behoben werden.
Erstellen
Um einen Flash-Film in einem älteren Format
zu erstellen, sollten Sie zuerst die Version im
Register Flash unter Datei • Einstellungen
für das Veröffentlichen festlegen.
Flash zeigt Ihnen schon bei der Entwicklung
an, was Sie benutzen dürfen und was nicht. Innerhalb des Bedienfeldes Aktionen sind alle
unzulässigen Aktionen gelb hervorgehoben.
Falls Sie einen Flash 4-Film erstellen, werden Sie
bei den Aktionen eine positive Überraschung
erleben: Die mathematischen Funktionen des
Math-Objektes (z. B. Sinus und Cosinus) stehen
auch für Flash 4-Filme zur Verfügung!
224
Abgesehen von den Aktionen gibt es nur
wenige weitere Einschränkungen bei der Entwicklung für einen älteren Flash Player. So gut
wie alle Werkzeuge und Funktionen von Flash 5
können genutzt werden. So erleichtern Sie sich
die Arbeit z. B. mit den neuen Bézierkurven
(Stift- und Unterauswahl-Werkzeug) oder mit
dem Debugger (Fehlersuche in ActionScripts).
Leider werden von den älteren Flash-Versionen
u. a. keine Smart Clips verstanden.
Bei der Erstellung eines Flash-Films (SWF)
für einen älteren Flash Player sollten Sie beachten, dass die Quelldatei (FLA) immer im Flash 5Format vorliegt und von älteren Flash-Versionen nicht geöffnet werden kann. Falls Sie also
eine alte Flash-Datei in Flash 5 öffnen und bearbeiten, können Sie diese in einem SWF-Format für einen älteren Flash Player veröffentlichen. Aber sobald Sie die Quelldatei speichern, liegt diese in einem Flash 5-Format vor
und kann nicht mehr in älteren Entwicklungsumgebungen geöffnet werden.
Konvertieren
Beim Öffnen einer älteren Flash-Datei konvertiert Flash 5 diese. Folgende Änderungen werden dabei in ActionScripts durchgeführt:
왘 Jedes Vorkommen des Gleichheitsoperators
= in Flash 4 wird in den Gleichheitsoperator
== von Flash 5 umgewandelt.
왘 Die Operatoren +, ==, !=, <>, <, >, >= und <=
haben in Flash 5 eine neue Bedeutung erhalten. Flash 4-Dateien werden entsprechend konvertiert. In Flash 4 handelte es
sich dabei immer um nummerische Operatoren, in Flash 5 können diese Operatoren
auch für andere Datentypen verwendet
werden. Um Problemen vorzubeugen, wird
aus diesem Grund für alle Operanden (so-
ActionScript
.
왖
Abbildung
Bedienfeldes Aktionen bei der Entwicklung eines älteren Flash-Formates
왘
왘
왘
왘
weit das sinnvoll ist) die Funktion Number
eingefügt.
In Flash 4 erzeugte \n einen Wagenrücklauf.
In Flash 5 wird \n (ASCII 13) entsprechend
dem ECMA-262-Standard als Zeilenvorschub interpretiert (ASCII 10). Aus diesem
Grund wird das Vorkommen von \n in einer
Flash 4-Datei in \r geändert.
In Flash 4 wurden Zeichenfolgen mit & verknüpft. In Flash 5 wird dieser Operator für
bitweise Operationen verwendet. Zeichenfolgen werden entweder mit + oder add
aneinander gehängt. Aus diesem Grund
konvertiert Flash 5 jedes & in einem Flash 4Film in add.
Viele Funktionen benötigten in Flash 4 keine Klammern. Auf Grund der überarbeiteten und konsistenteren Syntax in Flash 5
werden diese Klammern automatisch hinzugefügt.
Falls die Funktion getProperty mit einem
ungültigen Ziel, also einer nicht vorhandenen Filmsequenz, verwendet wird, dann
gibt Flash 5 undefined zurück (bei manchen
왖
Abbildung
Ausgabe der Konvertierungen
Aktionen wird undefined automatisch in 0
konvertiert). In Flash 4 war das Ergebnis in
diesem Fall 0. Um daraus resultierende Probleme zu verhindern, wird an den entsprechenden Stellen bei der Konvertierung die
Funktion number eingefügt.
Neben den aufgezählten Konvertierungen
sollten Sie unbedingt darauf achten, dass Sie
keine gleichen Namen für Variablen und Objekte wählen, dass Sie Sonderzeichen und
Leerzeichen in Namen vermeiden und dass
keine Flash 5-Schlüsselwörter für Variablennamen verwendet werden.
Die durchgeführten Konvertierungen zeigt
Flash im Ausgabefenster (Fenster • Ausgabe)
an. Auch mögliche Probleme, wie doppelt vergebene Namen, werden dort in den meisten
Fällen protokolliert.
Versionen
.
225
Flashdetection
Ist er da, oder ist er nicht da?
Da Flash einen Flash Player zum Abspielen benötigt, muss dieser beim Betrachter vorhanden
sein. Meistens ist das der Fall. Falls aber mal
doch kein Flash Player da ist, dann sollte darauf
angemessen reagiert werden.
Wenn Sie Ihren Flash-Film fertig gestellt
haben, werden Sie diesen normalerweise als
SWF-Datei im Internet veröffentlichen. Zum
Betrachten benötigt der Anwender einen Flash
Player. Aber was passiert, wenn er keinen Flash
Player für seinen Webbrowser installiert hat?
In diesem Kapitel werden viele Techniken
gebraucht, die in späteren Kapitel behandelt
werden. Lesen Sie bei Fragen bitte in diesen
Kapiteln nach, oder betrachten Sie zum besseren Verständnis die Beispieldateien!
In den meisten Fällen, bei mehr als 90 Prozent aller Anwender, wird Ihr Flash-Film auf einen Flash Player stoßen und spielt dann ab. Da-
mit Ihr Film aber korrekt inklusive aller Funktionen und Sounds wiedergegeben wird, benötigen Sie den passenden Flash Player
Player. Wenn es
sich also um einen Flash 5-Film handelt, dann
brauchen Sie auch einen Flash 5-Player.
Eine Flashdetection (Flash-Erkennung)
übernimmt die Versionsüberprüfung und reagiert entsprechend darauf. Um zu ermitteln, ob
und welche Version des Flash Players vorhanden ist, gibt es verschiedene Strategien:
Die Brute Force
Force-Methode (brutale Gewalt)
geht davon aus, dass der Betrachter einen
passenden Flash Player besitzt und überprüft das Plug-in nicht.
Erkennung des Flash Players
226
Macintosh
Windows NT, 9x
und 2000
Windows 3.x
WebTV
Navigator 2
nicht möglich
nicht möglich
nicht möglich
–
Navigator 3
Plug-in
Plug-in
Plug-in
–
Navigator 4
Plug-in
Plug-in
Plug-in
–
Internet Explorer 3
nicht möglich
ActiveX-Steuerung
nicht möglich
–
Internet Explorer 4.x
nicht möglich
ActiveX-Steuerung
–
–
Internet Explorer 5.x
Plug-in
ActiveX-Steuerung
–
–
AOL 3 und 4
nicht möglich
ActiveX-Steuerung
–
–
Sonstige
–
–
–
nicht möglich
ActionScript
.
Der Benutzer wählt auf einer Einstiegsseite
selbst aus, ob er einen Flash-Inhalt oder einen alternativen Inhalt betrachten möchte.
Dieses Verfahren ist recht unkompliziert, erwartet vom Anwender aber, dass er im
Zweifelsfall weiß, was Flash ist. Dies kann
man aber nicht immer voraussetzen.
Bei der Erkennung mit Skript wird mit Hilfe
eines JavaScripts oder VBScripts ermittelt,
ob und welches Plug-in installiert ist.
Die Erkennung ohne Skript entwickelt sich
immer mehr zu der beliebtesten Flashdetection, da sie sich recht einfach realisieren
lässt und zuverlässig funktioniert.
Die Brute Force-Methode gehört zu den
kompromisslosen Varianten, die Sie nur einsetzen sollten, wenn Sie auf Besucher ohne Flash
Player verzichten können. Auf einer Website
wie z. B. www.flashforum.de kann man sich
diese Ignoranz leisten, da diese Site sich ausschließlich an Flash-Entwickler richtet.
Die Auswahlmethode hat den Vorteil, dass
sie einfach, billig und schnell zu produzieren ist
und dem Benutzer die freie Wahl lässt: Selbst
wenn er einen Flash Player installiert hat, kann
er sich trotzdem den HTML-Inhalt anschauen.
Beide Methoden haben aber einen entscheidenden Nachteil
Nachteil, denn sie erkennen nicht, ob
der richtige Flash Player vorhanden ist. Falls
ein älterer Flash Player installiert ist, dann kann
das zu unerwarteten Ergebnissen führen. Der
Flash 2-Player z. B. zeigt bei neueren Flash-Filmen einfach nichts an, der Flash 3 Player ignoriert MP3-Sounds und den größten Teil der Aktionen. Keiner der Player ist in der Lage, einen
Flash 5-Film abzuspielen. Das ist besonders
deshalb ärgerlich, da manche Webbrowser
trotzdem und ohne Meldung versuchen, den
Film wiederzugeben.
Erkennung mit Skript
Zwar ist die Erkennung des Flash Players mit
Hilfe eines JavaScripts oder eines VBScripts
sehr beliebt, doch weist sie leider einige
Schwächen auf:
Die Erkennung funktioniert nicht in jedem
Browser (siehe Tabelle).
Die Erkennung benötigt je nach Browser
und Betriebssystem andere Skripts.
Die Erstellung der benötigten Skripts erfordert gute JavaScript-/VBScript-Kenntnisse.
Die Einstellungen des Benutzers müssen die
Ausführung von JavaScript und VBScript erlauben, was viele Benutzer aus Sicherheitsgründen deaktiviert haben.
Der Technologiemix (Flash und JavaScript/
VBScript) verlangt vom Benutzer, dass er einen JavaScript-/VBScript fähigen Browser
besitzt, Sicherheitsbedenken in den Wind
schlägt und den passenden Flash Player installiert hat.
Websites zum Thema Flashdetection
Macromedia selbst hat zu diesem Thema
eine englischsprachige Technote unter www.
macromedia.com/support/flash/ts/documents/
uber_detection.htm veröffentlicht. Unter
www.macromedia.com/support/flash/ts/
documents/browser_support_matrix.htm sind
die für Flash spezifischen Unterschiede der
einzelnen Webbrowser zusammengefasst. Der
Entwickler Colin Moock hat sich mit diesem
Thema ebenfalls intensiv auseinander gesetzt
und die Ergebnisse auf seiner Website www.
moock.org zusammengetragen.
Flashdetection
.
227
Arbeitsweise
Um unter Windows NT, 2000 und 9x im Internet Explorer zu ermitteln, ob und in welcher
Version der Flash Player vorhanden ist, benötigen Sie VBScript
VBScript. Folgende Anweisung können
Sie in Ihrem HTML-Dokument dafür verwenden:
Flash: FlashInstalled = (IsObject(Create
Object("ShockwaveFlash.ShockwaveFlash")))
Um eine spezielle Flash-Version wie z. B.
Flash 4 zu ermitteln: FlashInstalled =
(IsObject(CreateObject("ShockwaveFlash.
ShockwaveFlash.4")))
Abgesehen vom Internet Explorer unter
Windows NT, 2000 und 9x und den Webbrowsern, die eine Erkennung nicht unterstützen, wird die Existenz des Flash Players mit
JavaScript ermittelt (ab JavaScript 1.1 bzw. Netscape Navigator 3). Dafür können Sie unter anderem die folgenden Anweisungen einsetzen:
Flash: navigator.mimeTypes["type"] =
Diese Beispiel
finden Sie auch
auf der
CD-ROM zum
Buch.
"application/x-shockwave-flash"
Um eine spezielle Flash-Version wie z. B.
Flash 4 zu ermitteln: navigator.plugins
["name"] = "Shockwave Flash" und
navigator.plugins['Shockwave Flash'].
description >= "Shockwave Flash 4"
Hilfsmittel
Bevor Sie sich jetzt aber mit der Erstellung eines JavaScripts oder VBScripts beschäftigen,
sollten Sie weiterlesen. Macromedia bietet einige Hilfsmittel an, die Ihnen das Programmieren an dieser Stelle ersparen.
Flash selbst erzeugt auf Wunsch ein fertiges
HTML-Dokument inklusive der Überprüfung
des installierten Flash Players mit den oben beschriebenen Einschränkungen. Für Flash 2 und
Flash 3 hat Macromedia das kostenlose Programm Aftershock bereitgestellt, das diese
228
Aufgabe übernommen hat. Seit Flash 4 finden
Sie diese Einstellungen unter Datei • Einstellungen für Veröffentlichungen im Register
HTML. Dort brauchen Sie nur eine passende
Vorlage zu wählen, und Flash erstellt für Sie
ein HTML-Dokument inklusive der notwendigen Skripts.
Ein weiteres nützliches Werkzeug ist Dreamweaver. Dreamweaver und Dreamweaver
UltraDev stellen ein Verhalten zur Plug-inÜberprüfung bereit. Deutlich leistungsfähiger
ist die Flash Erkennung im kostenlosen »Flash
Deployment Kit«, das auch unabhängig von
Dreamweaver erhältlich ist. Eine deutsche Version soll unter dem Namen »Flash Anwendungs-Kit« mit Erscheinen dieses Buches erhältlich sein.
Erkennung ohne Skript
Die Erkennung des Flash Players kann auch
ohne Skriptsprachen wie JavaScript oder
VBScript durchgeführt werden. Das hat folgende Vorteile
Vorteile:
Der Benutzer benötigt keine speziellen
Webbrowser, da die Erkennung plattformübergreifend in fast allen Situationen zuverlässig funktioniert.
Die Erkennung funktioniert unabhängig von
den Sicherheitseinstellungen und der Konfiguration des Webbrowsers.
Es ist kein Technologiemix notwendig, da
auf andere Technologien außer Flash verzichtet werden kann.
Es gibt aber auch Nachteile
Nachteile, die nicht verschwiegen werden dürfen. Diese Nachteile
treten aber normalerweise nur auf, wenn gar
kein Flash Player installiert ist, und selbst dann
nur in den wenigsten Fällen!
ActionScript
.
Abbildung 1
Arbeitsweise der Flash-Erkennung ohne
Skript
Arbeitsweise
Die skriptlose Erkennung verwendet einen
Flash-Film, den so genannten Sniffer (Schnüffler), um den Flash Player zu überprüfen. In
mehr als 90 Prozent aller Fälle wird dieser
Sniffer von einem Webbrowser mit installiertem Flash Player aufgerufen. Bei nicht einmal
zehn Prozent der Anwender ist bis jetzt noch
kein Flash Player vorhanden. Falls es sich dann
um den Internet Explorer unter Windows handelt, installiert dieser – soweit »Install on Demand« nicht deaktiviert ist – den aktuellen
Flash Player automatisch und spielt dann den
Sniffer ab. Auch der Netscape Navigator bietet
eine ähnliche Funktion und installiert im Normalfall das aktuellste Plug-in.
In den wenigen Fällen, in denen nun kein
Player vorhanden ist und dieser nicht installiert
wird, ruft der Webbrowser über ein RefreshTag eine alternative Seite auf. Wenn es sich um
keinen Browser der vierten Generation oder
neuer handelt, funktioniert der Refresh (Auffri-
schen) nicht, und die aktuelle Seite bleibt auf
dem Bildschirm stehen. Für diesen Fall, der
weit weniger als fünf Prozent aller Anwender
betrifft, wird eine entsprechende Information
am Bildschirm angegeben.
In den meisten Fällen ist bereits ein Flash
Player vorhanden, und es muss nur die Version
ermittelt werden. Wenn es sich bei dem Browser um den Internet Explorer unter Windows
handelt, hat dieser eine an sich sehr nützliche
Besonderheit, denn er erkennt die Version des
Flash Players automatisch. Diese Erkennung
basiert auf der im HTML-Dokument angegebenen Versionsnummer codebase="http://
download.macromedia.com/pub/shockwave/cabs/
flash/swflash.cab#version=5,0,0,0". Falls Sie
die automatische Installation des aktuellsten
Flash Players vermeiden möchten, dann verwenden Sie stattdessen se="http://download.
macromedia.com/pub/shockwave/cabs/flash/
swflash.cab".
Flashdetection
.
229
Das komplette HTML-Dokument sollte ungefähr so aussehen:
<HTML>
<HEAD>
<TITLE>Flashdetection</TITLE>
<meta http-equiv="refresh"
nen Variable $version statt. Da sich neuere
Flash-Filme in einem Flash Player der Version 2
recht eigenartig verhalten, müssen noch einige
Zeilen geschrieben werden: die URL wird in einer Variablen vor einem Flash 2-Player »versteckt«, und für Flash 2 muss noch ein play
hinten angefügt werden.
content="15;URL=noflash.html">
</HEAD>
url="flash5.html";
<BODY>
if (substring(eval("$version"), 5, 1)
<OBJECT classid="clsid:D27CDB6E-AE6D-
ge "5") {
11cf-96B8-444553540000"
getURL (url);
codebase="http://download.macromedia.
com/pub/shockwave/cabs/flash/swflash.
cab"
WIDTH=18 HEIGHT=18>
stop ();
} else {
play ();
}
<PARAM NAME=movie
VALUE="flashsniffer.swf">
<EMBED src="flashsniffer.swf"
WIDTH=18 HEIGHT=18 TYPE=
"application/x-shockwave-flash"
PLUGINSPACE="http://www.macromedia.com/
go/flashplayer">
</EMBED>
</OBJECT>
</BODY>
</HTML>
Unabhängig davon, welcher Flash Player
letztendlich installiert ist, startet jetzt der
Sniffer seine Arbeit. Der Sniffer verwendet
spezielle Eigenschaften der verschiedenen
Flash Player und ermittelt so die installierte
Version. Im ersten Schritt wird auf Flash 5 getestet, dann auf Flash 4 mit Druckfunktion (alle
Flash Player seit Dezember 1999), dann auf
Flash 4, auf Flash 3 und schließlich auf Flash 2.
Zuerst wird im Bild 6 überprüft, ob es sich
um den Flash Player 5 handelt. Die Überprüfung findet mit Hilfe der seit Flash 4 vorhande-
230
In dem Skript wird über eine Kontrollstruktur überprüft, ob (if) der Flash Player 5 oder
(für die Zukunft) ein neuerer installiert ist. Falls
nicht (else), läuft der Film einfach weiter ab
und gelangt im nächsten Schlüsselbild zu einer
weiteren Überprüfung.
Das Prüfen auf Flash 4 mit Druckfunktion
funktioniert ähnlich. Hier wird aber nur überprüft, ob die Variable $version überhaupt existiert, da sie mit diesem Flash Player das erste
Mal eingeführt wurde:
url="flash4print.html";
if (eval("$version") gt "") {
getURL (url);
stop ();
} else {
play ();
}
Für den Test auf den normalen Flash 4Player reicht die Aktion if kombiniert mit ei-
ActionScript
.
Abbildung 2
Zeitleiste des Sniffers
nem Ausdruck. Dies verstehen weder Flash 2
noch Flash 3.
de der Flash-Film überhaupt gar nicht funktionieren.
url="flash4.html";
getURL ("flash2.html");
if (url gt "") {
stop ();
getURL (url);
stop ();
} else {
play ();
}
Die Überprüfung auf Flash 3 benötigt eine
Filmsequenz, da diese in Flash 2 noch nicht
existierten und dementsprechend auch nicht
abgespielt werden. In dieser Filmsequenz werden die folgenden Aktionen abgelegt, die unter anderem auch verhindern, dass weitere
Überprüfungen durchgeführt werden, falls
Flash 3 vorhanden ist.
getURL ("flash3.html");
tellTarget ("/") {
stop ();
}
Falls bis hierhin keine Überprüfung erfolgreich war, dann muss es sich um den Flash
Player der Version 2 handeln, denn sonst wür-
Damit der Sniffer zuverlässig funktioniert,
wird er im Flash 4-Format veröffentlicht. Aus
diesem Grund sind auch nur Aktionen verwendet worden, die es auch schon in Flash 4 gab
(falls Sie für den Sniffer beim Veröffentlichen
das 5er-Format wählen, arbeitet er nicht korrekt).
Testen der Flashdetection
Um die Flashdetection testen zu können, benötigen Sie zuallererst die alten Flash Player.
Diese bietet Macromedia unter www.
macromedia.com/support/flash/ts/documents/
oldplayers.htm für Testzwecke an. Bei dem
Plug-in (alle Browser außer dem Internet Explorer unter Windows) sind die Installation
und das Entfernen kein Problem.
Falls Sie den Flash Player komplett aus Ihrem System verbannen möchten, finden Sie
diesen im Plug-in-Ordner des Browsers unter
den Dateinamen:
Flashdetection
.
231
NPSWF32.dll unter Windows
Shockwave-Flash-NP-PPC oder ShockwaveFlash-NP-68 auf Macintosh-Computern
Durch das Entfernen der Datei beginnen für
Sie traurige Zeiten ohne Flash. Beim Internet
Explorer unter Windows ist das nicht ganz so
einfach. Bevor Sie einen älteren Flash Player
installieren, sollten Sie den vorhandenen Flash
Player entfernen. Dazu finden Sie die zugehörige ActiveX-Steuerung swflash.ocx entweder
im Ordner C:\Windows\System\Macromed\
Flash (Windows 9x) oder im Ordner C:\WinNT\
System32\Macromed\Flash (Windows NT oder
Windows 2000). Nachdem Sie die ActiveXSteuerung gefunden haben, können Sie diese
über regsvr32 C:\Windows\System\Macromed\
Flash\swflash.ocx /u aus Ihrem System deaktivieren (den genauen Pfad zur Datei nicht vergessen). Um das Entfernen wirklich endgültig
abzuschließen, müssen Sie jetzt noch alle Vorkommen von swflash.ocx und swflash.inf von
Ihrem Computer löschen und dann einen Neustart durchführen.
Stelle nur einen anderen Flash-Film anzugeben
(siehe das Kapitel zu HTML, Seite 312).
Falls der Benutzer einen Flash Player 4 oder
neuer installiert hat, können Sie auch mit einem Flash-Film arbeiten, der die entsprechende Information von außen über das HTMLDokument erhält (siehe Beispiel auf der
CD-ROM). In einem Flash-Film lassen sich direkt über die URL-Angabe Variablen festlegen,
was nicht nur in der URL-Zeile des Browsers,
sondern auch innerhalb eines HTML-Dokumentes funktioniert.
<HTML>
<HEAD>
<TITLE>erweiterte_detection</TITLE>
</HEAD>
<BODY>
<OBJECT classid="clsid:D27CDB6E-AE6D11cf-96B8-444553540000"
codebase="http://download.macromedia.
com/pub/shockwave/cabs/flash/swflash.
cab#version
=5,0,0,0"
Erweitern der Flashdetection
Die Flashdetection ohne Skript lässt sich auch
mit der JavaScript-Methode erweitern, um die
Vorteile beider Technologien optimal miteinander zu verbinden. Eine der besten Kombinationen hat Colin Moock unter www.moock.org
veröffentlicht.
Aber auch ohne JavaScript kann mit dieser
Flashdetection noch mehr als nur die Version
des installierten Flash Players herausgefunden
werden. Mit einem einfachen Trick finden Sie
heraus, ob es sich um den Internet Explorer
unter Windows oder einen anderen Browser
handelt. Da der Internet Explorer mit dem
Object-Tag arbeitet, brauchen Sie an dieser
232
WIDTH=100% HEIGHT=100%>
<PARAM NAME=movie
VALUE="erweiterte_detection.swf?activex=yes
erweiterte_detection.swf?activex=yes">
erweiterte_detection.swf?activex=yes
<EMBED
src="erweiterte_detection.swf?activex=no
erweiterte_detection.swf?activex=no"
erweiterte_detection.swf?activex=no
WIDTH=100% HEIGHT=100%
TYPE="application/
x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/
shockwave/download/index.cgi?P1_
Prod_Version=ShockwaveFlash">
</EMBED>
</OBJECT>
</BODY>
</HTML>
ActionScript
.
Eine weitere Information, die Sie leider erst
mit dem Flash Player 4 vom Dezember 1999
oder höher herausfinden können, ist das Betriebssystem und die genaue Versionsnummer
des Flash Players ($version und getVersion). In
Flash 5 sieht das in ActionScript dann so aus:
Darüber hinaus lassen sich in Flash 5 endlich auch das Datum und die Uhrzeit ermitteln
(date und toString). Mit der Methode toString
wird ein Datum in eine Zeichenkette verwandelt, die sich in einem Textfeld ausgeben lässt:
datum=new Date();
version=getVersion ();
datum=datum.toString();
player=version.substring( 4,5 );
os=version.substr(0,3);
Flashdetection
.
233
Preloader
Das »Streaming« optimal nutzen!
Wenn Sie größere Flash-Filme erstellen, benötigen Sie einen Preloader, um das Laden des Films
zu steuern.
Welche Dateigröße ein Flash-Film maximal
haben darf, lässt sich nicht pauschal beantworten. Je besser der Inhalt ist, desto eher ist der
Anwender bereit, auf ihn zu warten. Wenn es
sich nun aber partout nicht verhindern lässt,
dass die Datei sehr groß wird, sollten Sie die
Streaming-Fähigkeit von Flash ausnutzen, um
den Anwender schon während des Ladens zu
unterhalten.
wünschten Inhalt an, sondern springt nur in
das letzte verfügbare Bild.
Das Streaming testen Sie in der Entwicklungsumgebung, indem Sie Ihren Film über
Steuerung • Film testen ausprobieren. Hier
steht Ihnen der Bandbreiten-Profiler zur Verfügung (Ansicht • Bandbreiten-Profiler).
Strategien für Preloader
Was ist Streaming?
Sobald Flash einen Film lädt, wird dieser gestreamt. Flash lädt einen Film Bild für Bild: Die
Reihenfolge der Bilder in der Zeitleiste gibt
auch die Ladereihenfolge vor. Sobald das erste
Bild geladen ist, fängt Flash an, den Film abzuspielen, auch wenn noch nicht alles geladen
ist. Grundsätzlich ist das eine nützliche Eigenschaft, aber was passiert, wenn das Laden
langsamer verläuft als das Abspielen?
왘 Bewegungen und Streaming-Sounds stoppen, sobald Flash beim Abspielen auf ein
noch nicht komplett geladenes Bild stößt.
Sobald dieses Bild geladen ist, läuft der Film
wieder weiter.
왘 Falls Sie im Film mit einer Aktion an eine
Stelle springen möchten, die noch nicht geladen ist, dann zeigt Flash nicht den ge-
234
Um das Laden Ihres Flash-Films zu steuern,
stehen mehrere Varianten von Preloadern zur
Auswahl. Wenn es sich um eine einfache Animation handelt, die keine Interaktivität oder
Sprungbefehle beinhaltet, dann können Sie
meistens auf einen Preloader verzichten. Auch
bei sehr kleinen Flash-Filmen brauchen Sie
nicht immer das Laden zu steuern. Falls es sich
jedoch um ein umfangreiches Projekt handelt,
sollten Sie eine der folgenden Strategien wählen:
왘 Eine eher radikale, aber einfach umzusetzende Methode ist, darauf zu warten, dass
der komplette Film geladen ist. Um das
Warten etwas spannender zu gestalten, sollten Sie es mit einer Animation – einer Art
Vorspann – erweitern.
ActionScript
.
왘
Es ist kein guter Stil, dem Anwender nur
mitzuteilen, dass er sich noch etwas gedulden muss. Besser ist es, ihm auch zu sagen,
wie lange er noch zu warten hat. Bei dieser
Anzeige des Ladefortschritts können Sie
zwischen geladenen Bildern und Bytes wählen. Sogar die Anzeige der momentanen
Bandbreite ist möglich.
왘 Ein sehr trickreicher Preloader, der anzeigt,
welche Elemente gerade geladen werden
(z. B. »Loading Sound«) kommt weitestgehend ohne ActionScript aus und gewinnt
immer mehr Fans. Das liegt hauptsächlich
daran, dass er einfach zu realisieren ist, mit
jeder Flash-Version funktioniert und dem
Benutzer auch ein Feedback über den Ladefortschritt gibt.
Natürlich können Sie die verschiedenen
Strategien auch miteinander kombinieren, um
Ihren Lieblings-Preloader zu erhalten.
vom Ergebnis Aktionen durchführen. Die Aktion If Frame Is Loaded kontrolliert den Programmablauf, indem sie den Ladestatus eines
Bildes überprüft und abhängig vom Ergebnis
weitere Aktionen ausführt:
ifFrameLoaded ( Bild
Bild) {
Aktionen
}
Übersetzt bedeutet das so viel wie: »Wenn
das Bild x geladen ist, dann führe die folgenden Aktionen aus.« Leider kann hier aber nicht
angegeben werden, was gemacht werden soll,
wenn das Bild nicht geladen ist: Flash spielt in
diesem Fall einfach weiter ab! Um dieses Verhalten jetzt für einen Preloader zu nutzen,
platzieren Sie einfach in das nächste Schlüsselbild die folgenden Aktionen, die sicherstellen,
dass die Überprüfung immer wieder durchgeführt wird (dafür muss zwischen zwei Bildern
hin- und hergesprungen werden):
Abwarten
prevFrame ();
Bevor Ihr Flash-Film »loslegt«, können Sie sicherstellen, dass er komplett geladen ist. Diese
Variante des Preloaders ist relativ einfach einzusetzen und funktioniert auch schon mit
Flash 3. Bei größeren Projekten hat sie aber
den Nachteil, dass der Benutzer nicht »unterhalten« wird und bei zu langen Ladezeiten die
Website einfach wieder verlässt.
Flash 3-Variante
Für die Flash 3-Variante des abwartenden
Preloaders benötigen Sie die Aktion If Frame
Is Loaded . Bei dieser Aktion handelt es sich um
eine Kontrollstruktur
Kontrollstruktur. Kontrollstrukturen beeinflussen den Ablauf eines Programms, indem
Sie Bedingungen überprüfen und abhängig
play ();
Die Aktion prevFrame erhalten Sie, indem
Sie in den Basisaktionen Go To wählen und dort
als Typ »vorhergehendes Bild« angeben. Da
prevFrame den Abspielkopf im vorhergehenden
Bild stoppt, benötigen Sie noch das play. Hier
ergibt sich gleich eine Besonderheit von Flash:
Der Inhalt des Bildes, in dem diese Aktionen
liegen, wird nämlich niemals angezeigt, da
Flash die Aktionen ausführt – also in das vorherige Bild springt –, bevor der Inhalt dargestellt wird.
Die Aktion If Frame Is loaded springt dann
nicht einfach in das nächste, sondern in das
Preloader
.
235
왖
Abbildung 1
Meldung bei einer Endlosschleife
übernächste Bild und spielt weiter ab, sobald
der Film komplett geladen ist.
Es gibt aber leider zwei ganz entscheidende
Argumente gegen diesen Preloader:
왘 Falls Sie nicht explizit Filme für den Flash 3Player entwickeln, sollten Sie eine der folgenden Varianten wählen, da die Aktion If
Frame Is Loaded von Macromedia nicht
mehr »empfohlen« wird.
왘 Damit der Preloader richtig funktioniert
(auch in einem Flash 3-Player) müssen Sie
jedes Mal das letzte Bild Ihres Films ermitteln und angeben.
Flash 4-Variante
Seit Flash 4 haben Sie noch weitere Möglichkeiten, den Ladevorgang zu kontrollieren. Insbesondere _framesloaded und _totalframes
sind sehr hilfreich. Bei _framesloaded und
_totalframes handelt es sich um Eigenschaften, mit denen Sie die Anzahl der geladenen
Bilder und die Zahl aller Bilder des Flash-Films
ermitteln. Es gibt noch einen ganzen Haufen
weiterer Eigenschaften, die Sie für den Film
oder einzelne Filmsequenzen ermitteln und
verändern können.
Weitere nützliche Aktionen, die erst seit
Flash 4 funktionieren, sind Schleifen
Schleifen. Bei den
Schleifen handelt es sich ebenfalls um Kon-
236
trollstrukturen: Solange eine Bedingung erfüllt
ist, werden bestimmte Aktionen ausgeführt.
Beim Sahneschlagen heißt es: So lange rühren,
bis die Sahne steif ist. In Flash brauchen wir
die Schleife: So lange warten, bis das letzte
Bild geladen ist. In ActionScript sieht das dann
so aus:
while (_framesloaded<_totalframes) {
// warte und tue nichts
}
Leider funktioniert dieses Skript aber nicht,
da Flash glaubt, in eine Endlosschleife geraten
zu sein, und die Ausführung von Aktionen einfach abbricht (Flash 4) bzw. eine entsprechende Meldung ausgibt (Flash 5).
Das Problem der Endlosschleife lässt sich
lösen, indem der Abspielkopf zwischen zwei
Bildern hin- und herspringt. Dafür benötigen
Sie mit der bedingten Anweisung if eine weitere Kontrollstruktur. Mit if überprüfen Sie
eine beliebige Bedingung, wie z. B. ob die Anzahl der geladenen Bilder der Gesamtzahl an
Bildern des Films entspricht, und führen dann
abhängig vom Ergebnis weitere Aktionen aus.
Falls die Bedingung nicht erfüllt ist, können Sie
mit der Aktion else alternative Anweisungen
geben:
ActionScript
.
if (_framesloaded==_totalframes) {
// film ist geladen
} else {
// film ist noch nicht geladen
}
Seit Flash 4 können Sie Ausdrücke innerhalb
der Aktionen verwenden. So lässt sich an Stelle
eines festen Wertes auch eine Funktion oder
Eigenschaft in der Aktion Go To als Ziel nutzen.
Mit der Eigenschaft _currentframe ermitteln
Sie z. B. das aktuelle Bild. Durch
_currentframe-1 wird in das vorhergehende
Bild gewechselt, egal wo sich der Film befindet. Das folgende Skript lässt sich universell als
Preloader einsetzen:
if (_framesloaded<_totalframes) {
// film ist noch nicht geladen
gotoAndPlay (_currentframe-1);
}
Dieses Skript überprüft, ob alle Bilder geladen sind. Falls nicht, wird eine Schleife erzeugt, indem immer wieder zum vorherigen
Bild gesprungen wird. Sobald der Film vollständig geladen ist, geht es dann ganz normal
mit dem nächsten Bild weiter.
Eigenschaften
Mit den Eigenschaften können Sie in Flash
zahlreiche Objekte und Einstellungen beeinflussen. Position und Größe sind z. B. Eigenschaften von Filmsequenzen und die Darstellungsqualität ist eine Eigenschaft des
gesamten Films.
Es gibt drei Kategorien von Eigenschaften:
Eigenschaften für Textfelder, mit denen die
Anzeige von Textfeldern gesteuert werden
kann (scroll und maxscroll). Diese werden
in Flash 5 aber nicht mehr als Eigenschaften,
sondern als Funktionen behandelt und
durch einen Punkt getrennt direkt hinter einer Variablen ohne Unterstrich angegeben.
왘 Die für den gesamten Film gültigen globalen
Eigenschaften beeinflussen den Ton
(_soundbuftime), die Bedienung durch die
Tastatur (_focusrect) und die Darstellungsqualität (_highquality).
왘 Eigenschaften für Filmsequenzen, die zahlreiche Möglichkeiten bieten, Filmsequenzen
darzustellen und zu animieren. Diese Eigenschaften lassen sich auch auf den ganzen
Film anwenden. Änderungen an den Eigenschaften werden erst durchgeführt, wenn der
Abspielkopf das Bild, in dem die Änderungen
vorgenommen wurden, verlässt.
Eigenschaften können ermittelt und teilweise auch verändert werden. Manche verwenden
als Wert konkrete Zahlen, Zeichenfolgen oder
einfach nur die Alternative zwischen wahr
(TRUE) und falsch (FALSE). Wahr und falsch werden bei Eigenschaften als ein- oder ausgeschaltet interpretiert.
Mit Hilfe von Ausdrücken können Sie alle
Eigenschaften auslesen, umformen und wieder
einer Eigenschaft zuweisen. Um innerhalb einer Filmsequenz deren Eigenschaften zu bestimmen, brauchen Sie nur die Eigenschaft anzugeben. Falls Sie jedoch Werte einer anderen
Filmsequenz ermitteln möchten, geben Sie
den Pfad zu der Filmsequenz gefolgt von einem Punkt und der Eigenschaft inklusive Unterstrich an: filmsequenz._x bezieht sich z. B.
auf die horizontale Position der Filmsequenz.
왘
Preloader
.
왘
Das Beispiel
finden Sie auf
der CD-ROM
zum Buch.
237
Preloader in der Flash 3-Variante erstellen
1. Bestimmen Sie das letzte Bild Ihres Films
Setzen Sie in der letzten Szene in das letzte Bild
Ihres Flash-Films ein Schlüsselbild. Diesem
Schlüsselbild geben Sie eine Bezeichnung: z. B.
»ende«.
왗
Das Beispiel
finden Sie auf
der CD-ROM
zum Buch.
2. Platzieren Sie die Aktion IF Frame Is
Loaded
In das zweite Schlüsselbild (Aktionen im ersten
Schlüsselbild werden in einigen seltenen Fällen
nicht richtig ausgeführt) Ihres gesamten Films
platzieren Sie die neben stehenden Aktionen.
Diese Aktionen überprüfen, ob alle Bilder bis
zum Bild mit der Bezeichnung »ende« schon geladen sind. Falls ja, wird vom zweiten Bild direkt
in das vierte Bild gesprungen und der Film weiter
abgespielt. Falls nein, geht es weiter mit Bild
drei. Wichtig ist, dass es gotoAndPlay und nicht
gotoAndStop heißt, da sonst der Film im vierten
Bild einfach stehen bleibt.
3. Stellen Sie sicher, dass die Überprüfung immer wieder durchgeführt wird, bis der Film
komplett geladen ist.
In das dritte Bild platzieren Sie ebenfalls ein
Schlüsselbild. Hier verwenden Sie die neben stehenden Aktionen.
Diese Aktionen bewirken, dass es zurück zum
zweiten Bild geht. Dort wird dann wieder überprüft, ob alle Bilder bis zum Ende geladen sind.
An Stelle dieser beiden Aktionen ließe sich auch
die Aktion Go To verwenden, die aber die genaue Angabe eines Sprungziels benötigt, was
häufig mehr Arbeit macht.
238
ifFrameLoaded ("ende") {
gotoAndPlay (4);
}
prevFrame ();
play ();
ActionScript
.
Abwarten mit Animation
Um einfache Preloader etwas spannender zu
gestalten und dem Benutzer die Wartezeit so
zu »versüßen«, sollten Sie ein Intro oder zumindest eine kleine Animation verwenden.
Auch ein einfaches Spiel als Preloader erhöht
die Wahrscheinlichkeit, dass der Benutzer auf
Ihrer Website bleibt. Natürlich sollte Ihr Preloader dadurch nicht so groß werden, dass Sie
dann einen Preloader für den Preloader benötigen.
Sie müssen nur das Intro, die Animation
oder das Spiel in eine Filmsequenz packen und
diese einfach in den Preloader platzieren. Fertig ist der erweiterte Preloader.
Eine weitere Verbesserung dieses Preloaders
ist, dass Sie nicht auf das Laden des gesamten
Films warten, sondern dass Sie Bereiche vorausladen
ausladen. Dafür brauchen Sie nur die Bedingungen zu ändern. In den meisten Fällen müssen Sie dann aber mehrere Preloader in einem
Film verwenden, was den Aufwand natürlich
erhöht.
Anzeige des Fortschritts
Platzieren Sie in Ihrem Preloader einen dynamischen Text, den Sie z. B. mit der Variable
ausgabe verbinden (Fenster • Bedienfeld •
Textoptionen). In diese Variable schreiben Sie
immer den Wert der aktuell geladenen Bilder.
Der gesamte Preloader sieht dann z. B. so aus:
ausgabe=_framesloaded+" Bilder von "+
왘
totalframes+" Bildern geladen!";
CD-ROM
if (_framesloaded<_totalframes) {
// film ist noch nicht geladen
gotoAndPlay (_currentframe-1);
}
Für das folgende Beispiel bezüglich der geladenen Bytes benötigen wir noch ein klein
wenig den Dreisatz, schließlich wollen Sie dem
Benutzer in Prozent anzeigen, wie viel schon
geladen ist: Die Anzahl der Bilder interessiert
ihn nämlich normalerweise überhaupt nicht.
Da beim Dreisatz nicht immer glatte Werte
herauskommen, wird mit Math.round noch eine
Funktion verwendet, die das Ergebnis rundet.
prozent=Math.round (getBytesLoaded()/
왘
getBytesTotal()*100);
CD-ROM
ausgabe=prozent+" Prozent von "+
Sehr benutzerfreundlich sind Preloader, die
den Fortschritt des Ladens anzeigen und den
Anwender jederzeit darüber informieren, wie
lange er noch warten muss. Der Fortschritt
kann auf mehrere Arten gemessen werden:
왘 Anzahl der geladenen Bilder
왘 Anzahl der geladenen Bytes
Die Eigenschaften _totalframes und
_framesloaded in ActionScript helfen, die Anzahl der Bilder und den Ladestatus zu bestimmen. Die Methoden getBytesTotal und
getBytesLoaded machen das Gleiche bezüglich
der Dateigröße.
getBytesTotal()+" Bytes geladen!";
if (_framesloaded<_totalframes) {
// film ist noch nicht geladen
gotoAndPlay (_currentframe-1);
}
Auf der Basis dieser Eigenschaften und Methoden können Sie noch weitere Berechnungen anstellen. Mit Hilfe einer Zeitmessung
(Funktion getTimer) ließe sich z. B. die aktuelle
Bandbreite errechnen.
Preloader
.
239
Preloader ohne ActionScript
왗
Dieses Beispiel
finden Sie auch
auf der CDROM zum
Buch!
Preloader ohne ActionScript machen sich das
Streaming-Verhalten von Flash zu Nutze! Da
alle Symbole, Sounds, Schriftkonturen und
Bitmaps nur ein Mal in einem Flash-Film geladen werden, wird die Datei nur unwesentlich
größer, wenn Sie diese Elemente zusätzlich an
den Anfang des Films platzieren. Dies bewirkt
dann, dass sie schon am Anfang geladen werden müssen und somit den Abspielvorgang
stoppen. Erst wenn alle Elemente geladen
sind, geht es weiter. Da nun keine neuen Elemente mehr geladen werden müssen, hat der
Preloader funktioniert, und der Film läuft flüssig durch.
Ein Problem bleibt aber: Wie kann ich verhindern, dass die Grafiken und Sounds schon
am Anfang sichtbar bzw. hörbar sind. Ein Weg
wäre, die Grafiken außerhalb der Bühne zu
platzieren und den Sounds die Lautstärke null
zu geben. Geschickter ist es, die Elemente einfach in einer Filmsequenz zu platzieren, deren
erstes Bild leer ist und eine stop-Aktion enthält. Diese Filmsequenz platzieren Sie dann an
den Anfang Ihres Films als Preloader. Dort hält
die Filmsequenz, ohne sichtbar oder hörbar zu
sein, das Abspielen an, bis alle Elemente geladen sind. Dann läuft der Film flüssig weiter.
Sie können natürlich auch mehrere Filmsequenzen hintereinander platzieren und so
Kategorien für Sounds, Bitmaps usw. bilden.
Auf diese Art geben Sie dem Benutzer z. B.
eine Rückmeldung, was eigentlich gerade geladen wird.
Variablen
Eine Variable ist ein Container oder eine
Schublade für die verschiedensten Werte. In
einer Variablen kann unter anderem ein Name,
eine URL, eine Punktzahl oder eine Uhrzeit gespeichert werden. Der Inhalt einer Variablen
kann sich verändern, wobei der Name immer
gleich bleibt.
Jeder Film und jede Filmsequenz haben ihre
eigenen Variablen. Die Variablen werden genauso angesprochen wie Eigenschaften: Sie geben den Pfad (siehe Die Angabe von Zielen)
und – gefolgt von einem Punkt – die Bezeichnung der Variablen an. Falls Sie eine Variable in
derselben »Zeitleiste« ansprechen, brauchen
Sie nur die Bezeichnung der Variablen zu verwenden.
240
ActionScript
.
Preloader
.
241
Filmsequenzen
Ein Flash-Dokument besteht aus vielen Objekten
Bei komplexen Flash-Filmen werden Sie auf
Dauer nicht um Filmsequenzen herumkommen,
die – einmal verstanden – beeindruckende Möglichkeiten eröffnen.
Tell Target wird
nicht mehr gebraucht!
Um Filmsequenzen effektiv einzusetzen,
müssen Sie zuerst verstehen, wie Sie diese ansprechen und steuern können. Bis Flash 4 benötigte man dafür noch die Aktion Tell Target. Diese Aktion wurde nur von wenigen
Entwicklern wirklich verstanden, was aber weniger an den Entwicklern, sondern vielmehr an
dem eigenwilligen Konzept lag. In Flash 5 können Sie zwar immer noch mit Tell Target arbeiten, doch die neue Schreibweise ist deutlich
schlüssiger.
Steuern von Filmen und Filmsequenzen
Der logische Aufbau eines Flash-Films
Um die »Programmierung« von ineinander geschachtelten Filmsequenzen mit ActionScript
zu verstehen, müssen Sie sich nur klar machen,
wie ein Flash-Film aufgebaut ist. Dabei kommt
es nicht auf die Struktur der Ebenen und Bilder, sondern auf die Verschachtelung der Filmsequenzen an.
Ein Flash-Film (also eine SWF-Datei) wird
immer von einem Flash Player abgespielt. So
ein Flash Player kann sein:
242
ActiveX-Steuerung (für Microsoft Internet
Explorer oder z. B. für die Einbindung eines
Flash-Films in ein C++- oder Visual BasicProgramm)
Plug-in (für Netscape Navigator)
Flash Asset Xtra (für Macromedia Director)
Stand-alone-Player
Stand-alone-Projektor
Dieser Flash Player kann Flash-Filme steuern oder von diesen gesteuert werden. Um zu
steuern, benötigen Sie z. B. im Netscape Navigator JavaScript. Um gesteuert zu werden, stehen die FS Commands zur Verfügung.
Der erste geladene Flash-Film liegt immer in
Stufe 0 (engl. Level 0
0). Dieser Flash-Film gibt
die Abspielgeschwindigkeit, die Hintergrundfarbe (soweit für den Flash Player keine andere
z. B. im HTML-Code angegeben ist) und die
Größe vor. Mit Hilfe der Aktion Load Movie
können Sie weitere Flash-Filme in darüber liegende Level laden. Die neu geladenen Level
werden bezüglich der oberen linken Ecke aneinander ausgerichtet: Um sich die Positionierung der Inhalte zu erleichtern, sollten Sie alle
Filme in der gleichen Größe entwickeln. Die
neu geladenen Filme besitzen keinen Hintergrund und erhalten die gleiche Abspielgeschwindigkeit wie Level 0. Natürlich können
Sie auch einen neuen Film in Level 0 einladen
ActionScript
.
Abbildung 1
Der logische Aufbau eines Flash-Films
und so z. B. die Hintergrundfarbe und Abspielgeschwindigkeit ändern. Dies bewirkt allerdings, dass alle anderen Inhalte inklusive Level
und Variablen gelöscht werden.
In einem Level liegen dann eine ganze MenFilmsequenzen. Diese Filmsequenzen werge Filmsequenzen
den anhand ihrer Instanzennamen (Fenster •
Bedienfelder • Instanz) identifiziert. In einer
Filmsequenz wiederum können weitere Filmsequenzen liegen, und in denen natürlich auch
wieder. So besteht ein Level also normalerweise aus einer ganzen Menge ineinander geschachtelter Filmsequenzen. Jede Filmsequenz
verhält sich dabei wie ein eigener Flash-Film:
Seit Flash 4 lassen sich sogar an die Stelle einer
Filmsequenz komplette Flash-Filme mit der
Aktion Load Movie laden und auch wieder mit
Unload Movie entfernen.
Einen Flash-Film können Sie sich wie einen
Baum vorstellen. Jede Astgabel und jedes Blatt
wird dabei als Knoten bezeichnet, der wieder
aus einem kompletten Flash-Film (SWF-Datei)
oder einer Filmsequenz besteht. Wenn Sie mit
Leveln arbeiten, erhalten Sie einen ganzen
Wald (siehe Abbildung 1)!
Einige der größten Fragen vieler Flash-Entwickler sind jetzt: »Wie beeinflusse ich die einzelnen Knoten? Wie kann ich diese Filmsequenzen und Flash-Filme in meinem Projekt
steuern, und wofür ist das überhaupt gut?«
Der Sinn von Filmsequenzen
Fangen wir mit der letzten Frage an. Was ist
der Sinn dieser ganzen Sache? Dies lässt sich
einfach an einem (zugegebenermaßen etwas
abgegriffenen) Beispiel beantworten:
Sie bauen einen einarmigen Banditen (engl.
Slot Machine). Dieser Automat besteht aus
drei Anzeigen, die jeweils zehn verschiedene
Motive darstellen können. Der Spieler hat also
insgesamt 30 verschiedene Kombinationsmöglichkeiten, die Sie alle in Ihrem Flash-Film programmieren müssen. Wenn Sie eine vierte Anzeige benötigen, dann kommen Sie schon auf
Filmsequenzen
.
243
40 Möglichkeiten. Falls Sie jetzt aber mit Filmsequenzen arbeiten, dann kapseln Sie die Anzeige in ein Objekt. Dieses Objekt besteht aus
nur noch zehn Zuständen. Sie nehmen drei
oder vier oder fünf dieser Anzeigen und packen
diese in den Film, und fertig ist die ganze Sache – Sie müssen nur noch die einzelnen Anzeigen steuern.
Aber nicht nur Spiele wären ohne Filmsequenzen, also das Aufteilen der Grafiken und
Interaktionen auf mehrere ineinander geschachtelte Objekte, undenkbar, sondern auch
anspruchsvolle Menüs, Navigationen und
Schaltflächen, wie Sie das sicherlich von Websites wie www.yugop.com kennen.
Auf der CDROM zum
Buch finden
Sie einen
Flash-Film zu
diesem Thema,
mit dem Sie
die Angabe
von Zielen
üben können.
Bilder und Zustände
An manchen Stellen in diesem Kapitel wird absichtlich nicht von Bildern, sondern von Zuständen gesprochen. Zustände beziehen sich
nicht nur auf Grafiken, sondern auch auf Interaktionen, auf Variableninhalte und Programmierung. Wenn der Benutzer auf einen Menüpunkt klickt, dann wechseln Sie einfach in
einen neuen Zustand mit geöffnetem Menü. In
Flash lassen sich diese Zustände am einfachsten in Bildern montieren. Bei Bildern wiederum handelt es sich eigentlich nur um eine Teilmenge der Zustände, um einzelne aufeinander
folgende Zustände mit grafischem Inhalt, die
im Normalfall eine Animation ergeben.
Wenn Sie sich jetzt aber von dieser grafischen Betrachtungsweise lösen und Ihren Film
nicht einfach als eine Ansammlung von Bildern, sondern als eine Menge von Zuständen
sehen, dann entwickeln Sie völlig neue Möglichkeiten
lichkeiten, mit Flash zu arbeiten.
Die Angabe von Zielen
Um Aktionen zielgerichtet einzusetzen, müssen Sie zwei Dinge beachten:
Wo werden diese Aktionen aufgerufen?
Auf wen sollen sich diese Aktionen beziehen?
Aktionen beziehen sich immer auf die Zeitleiste, in der sie aufgerufen werden. Mit Zeitleiste ist hier eine Filmsequenz oder ein FlashFilm (egal ob als Level oder in eine Filmsequenz
Angabe von Zielen in Flash 4 und Flash 5
Flash 4
244
Flash 5
(keine Angabe)
this (optional)
_level1
_level1
/
_root
..
_parent
pfad/filmsequenz
pfad.filmsequenz
Tell Target
With
pfad:_eigenschaft
pfad._eigenschaft
pfad:variable
pfad.variable
(nicht vorhanden)
pfad.methode
Set Variable: "variable" = wert
Variable=wert
GetProperty ( "filmsequenz", _eigenschaft )
Filmsequenz._eigenschaft
Set Property ("filmsequenz", _eigenschaft) = wert
Filmsequenz._eigenschaft=wert
ActionScript
.
Abbildung 2
Die Ziele in einem Flash-Film
geladen) gemeint. Wenn Sie also direkt in Ihrem
Film eine Aktion wie z. B. _visible=false verwenden, dann wird der komplette Flash-Film
inklusive aller enthaltenen Filmsequenzen unsichtbar. Andere Level bleiben davon aber unberührt. Wenn Sie diese Aktion in eine Filmsequenz platzieren, dann werden nur diese
Filmsequenz und natürlich alle anderen in ihr
liegenden Filmsequenzen ausgeblendet. Das
heißt, dass der komplette Ast des Baumes ausgehend von dem Knoten, in dem die Aktion
liegt, unsichtbar wird.
Um jetzt ein anderes »Ziel« unsichtbar zu
machen, benötigen Sie den Pfad zu diesem
Ziel. Wenn Sie die Aktion direkt im Film, sozusagen an der Wurzel ausführen, dann ermitteln
Sie den Pfad, indem Sie einfach die Kanten bis
zum Ziel entlang wandern. Um z. B. die Filmsequenz c1 zu steuern, benötigen Sie den Pfad
a2.b2.c1. Die komplette Aktion lautet dann
a2.b2.c1._visible=false. Falls Sie die Aktion
aus der Filmsequenz a2 heraus auf c1 anwenden möchten, lautet das dann b2.c1._visible=
false.
Wenn Sie eine Wirkung von b1 auf a1 erzielen möchten, dann müssen Sie im Baum wieder
nach unten wandern. Dies erreichen Sie mit
_parent (in der Tabelle finden Sie einen Vergleich der Schreibweise aus Flash 4 mit der aus
Flash 5). Die ganze Aktion lautet dann _parent.
visible=false. Um von c2 nach a2 zu kommen,
schreiben Sie _parent._parent._visible=false.
Wie Flash die Filmsequenzen verwaltet
Alle Objekte inklusive der Filmsequenzen werden in Arrays (Feldern) verwaltet. Mit ActionScript können Sie so die Elemente des Films
ermitteln. Das folgende Skript z. B. gibt alle
Elemente der Hauptzeitleiste (_root) im Ausgabefenster aus, wenn Sie den Film in der
Entwicklungsumgebung testen (Steuerung •
Film testen):
for (i in _root) {
trace ("Typ:"+typeof _root[i]+"
Wert:"+_root[i]);
}
Filmsequenzen
.
245
Wenn Sie von a2 nach a1 möchten, würden Sie
_parent.a1 als Pfad angeben.
Es gibt aber nicht nur relative, also vom
Ausgangspunkt abhängige, sondern auch absolute Pfade
Pfade. Mit _root wandern Sie z. B. immer
direkt in die Wurzel des Baums. Also wenn Sie
z. B. von b3 nach a1 möchten, geben Sie
_parent._parent.a1 oder _root.a1 an. Egal von
wo aus Sie _root.a1 als Pfad im Baum angeben, Sie erreichen immer die Filmsequenz mit
dem Namen a1.
Bis jetzt bezogen sich alle Aktionen immer
nur auf das gleiche Level (Stufe), also den gleichen Baum. Um einen anderen Baum anzusprechen, benötigen Sie ebenfalls absolute
Pfade, die mit _level gefolgt von der Nummer
des Levels beginnen. Die Aktion _level0.
_visible z. B. macht den ganzen Baum inklusive aller enthaltenen Filmsequenzen unsichtbar,
egal von wo diese Aktion aufgerufen wird. Das
funktioniert selbst dann, wenn diese Aktion in
einem anderen Flash-Film liegt (solange beide
Filme vom gleichen Flash Player abgespielt
werden). Um z. B. von a3 aus b1 unsichtbar zu
machen, würden Sie _level0.a1.b1._visible=
false schreiben.
Wenn Sie Aktionen erstellen, die sich auf
die Filmsequenz beziehen, in der sie liegen,
dann können Sie den Pfad weglassen. Meistens ist es aber besser (zumindest besser zu
lesen), wenn Sie sich an JavaScript orientieren
und anstatt _visible=false die Aktion this.
_visible=false verwenden. Mit this wird immer eine Referenz auf die Zeitleiste verwaltet,
in der die Aktionen liegen.
Der Zieleditor
Bei der Angabe von Zielen ist der Zieleditor ein
hilfreiches Werkzeug, um die Pfade zu den
Filmsequenzen zu ermitteln. Diesen Editor ru-
246
fen Sie im Bedienfeld Aktionen (Fenster •
Bedienfelder • Aktionen) über das kleine
Zielkreuz unten rechts auf. Im Editor wird die
komplette Struktur der Filmsequenzen angezeigt. Ähnlich wie in einem Verzeichnisbaum
wählen Sie hier ein Ziel aus. Flash schreibt
dann in das Feld Ziel den dafür notwendigen
Pfad.
Bei der Darstellung des Pfades haben Sie die
Wahl zwischen Schrägstrichen und Punkten als
Trennzeichen der einzelnen Bestandteile des
Pfades. Bei den Schrägstrichen handelt es sich
um eine (nicht mehr zu empfehlende) Schreibweise aus Flash 4: Auch mit der Punktschreibweise lässt sich der Film für Flash Player 4 veröffentlichen.
Im Unterschied zum Zieleditor in Flash 4
können Sie in Flash 5 auch zwischen einem absoluten und einem relativen Modus wählen.
Sie sollten den relativen Modus bevorzugen,
da dieser Ihre Filme flexibler hält. Der absolute
Modus hat aber den Vorteil, dass Sie für den
Zielpfad hier auch Filmsequenzen auswählen
können, die nicht oberhalb (also näher zu den
Blättern des Baums) liegen. Sonst müssten Sie
diese Pfade immer per Hand angeben (was
dann aber auch meistens relativ geht, indem
Sie _parent verwenden).
Eigenschaften, Methoden und
Variablen
Ein Flash-Film zeichnet sich durch eine Vielzahl
an Eigenschaften aus. Diese Eigenschaften gelten teilweise für den ganzen Film, die meisten
lassen sich aber auch für einzelne Filmsequenzen angeben. Genauso verhält es sich mit Variablen (siehe Seite 249). Auch diese werden
für einzelne Filmsequenzen definiert. Um Film-
ActionScript
.
Abbildung 4
Aktion Set Property
Abbildung 3
Zieleditor
sequenzen steuern zu können, bietet Flash neben den Eigenschaften zahlreiche Methoden.
Häufig kommt es vor, dass Sie nicht nur einzelne Eigenschaften, Variablen oder Methoden
aufrufen möchten, sondern dass Sie eine ganze
Reihe von Aktionen bezüglich eines Objektes
durchführen wollen. Dann ist die Aktion with
sehr nützlich. Statt
filmsequenz._x=10;
filmsequenz._y=10;
filmsequenz._alpha=10;
schreiben Sie
with (filmsequenz) {
Eigenschaften
Die meisten Dinge in einem Flash-Film lassen
sich durch Eigenschaften beeinflussen. Alle Eigenschaften finden Sie innerhalb des Bedienfelds Aktionen in der Kategorie Eigenschaften. Den Wert der Eigenschaften können Sie
mit ActionScript ermitteln und bei den meisten dieser Eigenschaften auch verändern. Den
Inhalt einer Eigenschaft ermitteln Sie, indem
Sie das zugehörige Objekt (meistens eine Filmsequenz) und die entsprechende Eigenschaft
mit einem vorangestellten Unterstrich angeben. Dies können Sie auf zwei Arten durchführen:
Wie bei Variablen (empfohlen)
Mit der Funktion Get Property
Den Befehl
with gibt es
auch in
JavaScript!
_x=10;
_y=10;
_alpha=10;
}
Alle Aktionen, die im with-Block liegen,
werden so ausgeführt, als ob sie direkt in dem
angegebenen Objekt (in diesem Fall eine Filmsequenz) liegen.
Zeitpunkt und Auswirkung einer Änderung
Änderungen an den Eigenschaften einer Filmsequenz werden erst durchgeführt, wenn der
Abspielkopf das Bild, in dem die Änderungen
vorgenommen wurden, verlässt.
Änderungen der Eigenschaften einer Filmsequenz wirken sich auch auf alle in der Filmsequenz enthaltenen Objekte aus.
Filmsequenzen
.
247
Die Funktion Get Property erhält zwei Parameter: einen für das Ziel (falls Sie kein Ziel angeben, bezieht sich diese Funktion auf die Zeitleiste, in der sie ausgeführt wird) und einen für
die zu ermittelnde Eigenschaft. Ein ActionScript, mit dem Sie die aktuelle Darstellungsqualität ermitteln, könnte z. B. ausgabe =
getProperty ( "", _quality ); lauten. Die aktuelle horizontale Position einer Filmsequenz
geben Sie mit ausgabe = getProperty ( "pfad.
filmsequenz", _x ); aus.
Die meisten Eigenschaften lassen sich verändern, was ebenfalls auf zwei Arten möglich
ist:
Wie bei Variablen (empfohlen)
Mit der Aktion Set Property
Falls Sie die Eigenschaften von Filmsequenzen mit der Aktion Set Property bestimmen möchten, gibt Ihnen Flash im normalen
Modus des ActionScript-Editors alle notwendigen Parameter vor. Alle Eigenschaften, deren
Wert Sie verändern können, werden im Feld
Eigenschaft angeboten. Als Ziel geben Sie
eine Filmsequenz – wie ab Seite 246, Die Angabe von Zielen, beschrieben – an. Falls Sie kein
Ziel festlegen, verwendet Flash automatisch
die Filmsequenz oder den Film, in der bzw.
dem die Aktion aufgerufen wird. Das Feld
Wert bestimmt die Änderung an der Eigenschaft.
Eigenschaften
Eigenschaft
Beschreibung
Lesen/Setzen
Wert
_alpha
Diese Eigenschaft bestimmt den Alphawert
(Transparenz) einer Filmsequenz in Prozent.
ja/ja
Ganzzahl von 0 (durchsichtig)
bis 100 (undurchsichtig),
Standard 100
_currentframe
Diese Eigenschaft bestimmt das aktuelle
Bild in einer Filmsequenz.
ja/nein
_droptarget
Diese Eigenschaft bestimmt, auf welche Film- ja/nein
sequenz eine andere Filmsequenz gezogen
wurde.
_focusrect
Diese globale Eigenschaft bestimmt, ob um
ausgewählte Schaltflächen ein gelbes Rechteck erscheint. Dadurch wird die Bedienung
mit der Tastatur erleichtert.
Diese Eigenschaft gibt an, wie viele Bilder
der Filmsequenz bereits in den Speicher
geladen sind.
Diese Eigenschaft bestimmt die Höhe einer
Filmsequenz in Pixel.
Diese globale Eigenschaft bestimmt die
Darstellungsqualität des gesamten Films.
An Stelle dieser Eigenschaft sollte ab jetzt
_quality verwendet werden.
Ganzzahl von 1 (erstes Bild)
bis 16000 (maximale Anzahl
Bilder)
Name einer Filmsequenz als
Zeichenfolge (die Position des
Mauszeigers ist ausschlaggebend für den Wert)
Boolean (TRUE oder FALSE),
Standard TRUE (eingeschaltet)
_framesloaded
_height
_highquality
248
ja/ja
ja/nein
ja/ja
ja/ja
Ganzzahl von 1 (erstes Bild)
bis 16.000 (maximale Anzahl
Bilder)
Ganzzahl
0 für niedrige Qualität, 1 für
hohe Qualität und 2 für beste
Qualität
ActionScript
.
Eigenschaft
Beschreibung
Lesen/Setzen
Wert
_name
Diese Eigenschaft bestimmt die Bezeichnung
einer Filmsequenz.
Diese globale Eigenschaft bestimmt die Darstellungsqualität des gesamten Films.
Diese Eigenschaft bestimmt die Drehung
einer Filmsequenz in Grad.
ja/ja
Zeichenfolge
ja/ja
ja/ja
"LOW", "MEDIUM", "HIGH"
oder "BEST" als Zeichenfolge
Ganzzahl (Flash rechnet die
Drehung automatisch auf
einen Winkel zwischen –180
und 180 Grad um)
Ganzzahl, Standard 5
ja/nein
Zeichenfolge
ja/nein
Ganzzahl von 1 (erstes Bild) bis
16.000 (maximale Anzahl der
Bilder)
Zeichenfolge
_quality
_rotation
_soundbuftime
_target
_totalframes
_url
_visible
_width
_x
_xmouse
_xscale
_y
_ymouse
_yscale
Diese globale Eigenschaft bestimmt den
Puffer für den gestreamten Sound des
gesamten Films in Sekunden.
Diese Eigenschaft bestimmt den kompletten
Pfad einer Filmsequenz.
Diese Eigenschaft gibt an, aus wie vielen
Bildern der Flash-Film oder eine Filmsequenz
bestehen.
Diese Eigenschaft gibt den URL-Pfad des
Flash Player-Films an, der die Filmsequenz
enthält.
Diese Eigenschaft bestimmt, ob eine Filmsequenz sichtbar ist oder nicht.
Diese Eigenschaft bestimmt die Breite einer
Filmsequenz in Pixel.
Diese Eigenschaft bestimmt die horizontale
Position einer Filmsequenz in Pixeln.
Diese Eigenschaft ermittelt die horizontale
Position der Maus in Pixel.
Diese Eigenschaft bestimmt die Breite einer
Filmsequenz in Prozent.
Diese Eigenschaft bestimmt die vertikale
Position einer Filmsequenz in Pixel.
Diese Eigenschaft ermittelt die vertikale
Position der Maus in Pixel.
Diese Eigenschaft bestimmt die Höhe einer
Filmsequenz in Prozent.
Variablen
Eine Variable ist nichts anderes als ein Container
ner, in den Sie beliebige Dinge packen können.
In Variablen legen Sie z. B. Zwischenergebnisse,
Namen und Punktestände ab, um an anderer
Stelle im gleichen oder in anderen Skripts wieder auf diese zuzugreifen. Dabei verhalten sich
ja/ja
ja/nein
ja/ja
ja/ja
Boolean (TRUE oder FALSE),
Standard TRUE (eingeschaltet)
Ganzzahl
ja/ja
Ganzzahl
ja/nein
Ganzzahl
ja/ja
Ganzzahl, Standard 100
ja/ja
Ganzzahl
ja/nein
Ganzzahl
ja/ja
Ganzzahl, Standard 100
Variablen ähnlich wie Eigenschaften; nur dass
Variablen nicht mit einem Unterstrich beginnen,
sondern einen von Ihnen frei gewählten Namen
erhalten (dieser muss aber mit einem Buchstaben beginnen und darf keine Sonder- oder
Leerzeichen enthalten). Anhand dieses Namens
identifizieren Sie den Container.
Filmsequenzen
.
249
Angabe von
Zielen
250
Variablen werden wie Eigenschaften immer in
einer Zeitleiste verwaltet. Das heißt, Sie definieren Variablen für jede Filmsequenz separat.
Wenn Sie auf die Variablen einer anderen
Filmsequenz zugreifen möchten, benötigen Sie
den Pfad zu diesem Objekt.
Um den Inhalt einer Variable (oder Eigenschaft) zu ermitteln, geben Sie den Namen der
Variablen an. Falls Sie den Inhalt der Variablen
punkte in einem Textfeld ausgeben möchten,
können Sie z. B. ausgabe=punkte; schreiben.
Wenn die Variable nicht in der gleichen Filmsequenz liegt, in der die Aktionen ausgeführt
werden, dann müssen Sie den Pfad zu der gewünschten Filmsequenz angeben. Liegen die
Aktionen direkt im Film, und die Variable ist in
der Filmsequenz »spieler« definiert, dann
schreiben Sie ausgabe=spieler.punkte;. Falls
Sie z. B. von der Filmsequenz »highscore« auf
die im Hauptfilm liegende Variable name zugreifen möchten, dann könnten Sie ausgabe=
_parent.name; oder ausgabe=_root.name;
schreiben.
Sie können verschiedene Aktionen wählen,
um eine Variable (oder Eigenschaft) zu ändern
ändern:
Mit der Aktion set variable geben Sie die
Variable und den Wert für diese Variable an.
Im Expertenmodus geben Sie die Variable
und den Wert getrennt durch den Zuweisungsoperator »=« (der Vergleichsoperator
»=« aus Flash 4 ist durch »==« ersetzt worden) direkt in das Skript ein: variable =
wert;.
Im normalen Modus lässt sich mit Hilfe der
Aktion evaluate die Zuweisung eines Wertes zu einer Variablen genauso wie im Expertenmodus durchführen.
Falls Sie eine Variable ändern möchten, die
nicht in derselben Zeitleiste liegt, dann müssen
Sie den Pfad zu dieser Zeitleiste angeben. Liegt
die Aktion z. B. im Hauptfilm und ändert eine
Variable tage in der Filmsequenz »alter«, dann
schreiben Sie alter.tage=365*27;. Falls Sie eine
Filmsequenz »hindernis« haben, die auf die Variable punkte im Hauptfilm zugreift, dann können Sie _parent.punkte=_parent.punkte+10;
oder _root.punkte=_root.punkte+10; schreiben.
Übrigens lässt sich bei der Zuweisung von
Werten wie in JavaScript vorgehen, was in der
Dokumentation von Macromedia nur sehr beiläufig erwähnt wird:
Um den Wert einer Variablen zu erhöhen,
schreiben Sie z. B. variable+=10;.
Um den Wert einer Variablen zu verringern,
geben Sie z. B. variable-=10; an.
Um den Wert einer Variablen von einem
Vergleich abhängig zu machen, verwenden
Sie z. B. gruppe = Number(alter)>65 ? "Rentner" : "Erwerbstätig"; an Stelle der Aktion
if.
Lokale und globale Variablen
In Flash 5 gibt es jetzt auch die Unterscheidung
zwischen lokalen und globalen Variablen. Für
lokale Variablen, also Variablen, die nur innerhalb eines durch geschweifte Klammern festgelegten Bereichs (z. B. in einer Funktion) gelten, benötigen Sie bei der Deklaration das
Schlüsselwort var.
Methoden
Mit Methoden lassen sich Objekte – und bei
Filmsequenzen handelt es sich ebenfalls um
Objekte – steuern. Eine Methode verwenden
Sie genauso wie eine Variable oder eine Eigenschaft. Abhängig davon, wo die Methode ausgeführt wird und wo das Objekt liegt, müssen
Sie einen passenden Pfad zu dem Objekt angeben.
ActionScript
.
Wenn die Methode direkt im Objekt selber
liegt, dann geben Sie die Methode direkt an.
Um die Animation im Film oder einer Filmsequenz zu stoppen, würden Sie z. B. stop ();
schreiben. Alternativ können Sie auch this.
stop(); angeben. An der zweiten Variante erkennen Sie, dass Methoden direkt hinter dem
Objektbezeichner (also hier hinter dem Pfad
zur Filmsequenz)
Filmsequenz), durch einen Punkt getrennt,
angegeben werden. Um z. B. das Abspielen in
einer Filmsequenz mit dem Instanzennamen
»animation« aus dem Hauptfilm zu stoppen,
würden Sie animation.stop(); schreiben.
In Flash gibt es eine ganze Menge an Methoden, die speziell für Filmsequenzen gedacht
sind. Diese Methoden finden Sie im ActionScript-Editor (Fenster • Aktionen) innerhalb
der Objekte in der Kategorie MovieClip (Filmsequenz). Einige dieser Methoden werden bei
der Spieleentwicklung ab Seite 282, Spiele, näher betrachtet.
Operatoren benutzen Sie, um mehrere Elemente miteinander zu verknüpfen: also z. B.
das Pluszeichen, um in einem Ausdruck
zwei Zahlen zu addieren und das Ergebnis
dann als Parameter in einer Aktion zu verwenden.
Flash wertet diese Liste an Elementen aus
und verwendet das Ergebnis als Parameter.
Ausdrücke sind nach einem festen Schema aufgebaut. Entweder Sie verwenden in einem
Ausdruck nur einen einzigen Operanden, also
nur einen Wert, oder Sie verbinden mehrere
Operanden durch Operatoren. Operanden gibt
es für die verschiedensten Dinge. Die bekanntesten sind Plus, Minus, Mal und Geteilt. Das
Plus kann in Flash 5 auch verwendet werden,
um Zeichenketten miteinander zu verbinden
(in Flash 4 benötigten Sie dafür noch den Operator »&«).
Objektaktionen
Ausdrücke als Parameter
Die Parameter für Aktionen und Methoden
können als Ausdrücke angegeben werden. Ein
Ausdruck ist so etwas wie eine mathematische
Formel
Formel, die eine ganze Liste an Elementen beinhalten darf.
Zahlen wie z. B. 5 oder 11.7 (das Dezimalzeichen muss ein Punkt sein).
Zeichenketten
Zeichenketten, wie z. B. »Sie haben gewonnen«, werden in Anführungszeichen gesetzt.
Funktionen verhalten sich ähnlich wie in der
Mathematik: Sie packen etwas hinein, und
die Funktion gibt ein Ergebnis zurück (wie
bei einer »Blackbox«).
Eigenschaften wie z. B. die Größe oder Position haben die meisten Objekte.
Neu in Flash 5 ist, dass auf Ereignisse nicht nur
mit Bildaktionen und über Schaltflächen, sondern auch mit Filmsequenzen reagiert werden
kann. Diese ActionScripts werden wie die
ActionScripts für Schaltflächen als Objektaktionen bezeichnet.
Der Vorteil der Objektaktionen für Filmsequenzen ist, dass Sie dadurch autarke, also
sich selbst verwaltende Objekte schaffen. Dazu
ein Beispiel:
Filmsequenzen
.
251
Mausverfolger
1. Erstellen Sie eine Filmsequenz
Erstellen Sie eine Filmsequenz mit der Grafik, die
dem Mauszeiger verzögert folgen soll. Platzieren
Sie diese Filmsequenz in Ihren Film.
2. Erstellen Sie die Objektaktionen
Aktivieren Sie den ActionScript-Editor (Fenster •
Aktionen), und wählen Sie anschließend die Instanz der Filmsequenz auf der Bühne aus. Im
ActionScript-Editor sollte der Text »Objektaktionen« angezeigt werden. Wählen Sie nun die
Aktion onClipEvent, und aktivieren Sie für diese
Aktion das etwas unglücklich übersetzte Ereignis
Bild eingeben (engl. enter Frame). Als Nächstes
fügen Sie entweder im Expertenmodus oder über
die Aktion evaluate die neben stehenden zwei
Zeilen ein.
In diesen Zeilen wird der Abstand der Maus
zur Filmsequenz ermittelt. Auf Grund der Division nähert sich die Filmsequenz nur langsam dem
Mauszeiger an. Das fertige Skript sollte dann wie
neben stehend aussehen.
Im Beispiel Mausverfolger wird ausgenutzt,
dass sich alle Aktionen innerhalb des
onClipEvent-Blocks auf die Filmsequenz beziehen. Auch die Mausposition wird hier im Verhältnis zur Filmsequenz ermittelt.
Filmsequenzen verstehen folgende Ereignisse
se, wobei es bei den Mausereignissen egal ist,
wo auf der Bühne sie ausgelöst werden (es
muss also nicht auf das Objekt geklickt werden):
Laden bedeutet, dass die Filmsequenz neu
auf der Bühne erscheint.
252
_x = _x+_xmouse/8;
_y = _y+_ymouse/8;
onClipEvent (enterFrame) {
_x = _x+_xmouse/8;
_y = _y+_ymouse/8;
}
Bild eingeben (engl. enter Frame) wird abhängig von der Abspielrate ausgelöst und
funktioniert auch bei Filmen, die nur aus einem Bild bestehen.
Beim Entladen wird die Filmsequenz von
der Bühne entfernt.
Maus drücken wird immer dann ausgelöst,
wenn die Maustaste gedrückt wird (es ist
unerheblich, wo geklickt wird).
Maus loslassen bezieht sich auf das Loslassen der Maustaste.
Maus ziehen reagiert auf jede Mausbewegung.
ActionScript
.
Durch das Drücken einer Taste wird das Ereignis Taste drücken ausgelöst (wenn die
Taste gedrückt bleibt, wird dieses Ereignis
normalerweise immer wieder ausgelöst).
Sobald eine Taste losgelassen wird, löst
Flash das Ereignis Taste loslassen aus.
Das Ereignis Daten hilft, auf neu eingelesene Informationen zu reagieren.
Smart Clips
Neu in Flash 5 sind die Smart Clips (oder
Smart-Filmsequenzen). Diese erleichtern die
Smart-Filmsequenzen
Erstellung von komplexen Flash-Filmen aus
zwei Gründen:
Eine Trennung zwischen Programmierung
und Design wird ermöglicht.
Objekte lassen sich als Vorlage erstellen und
einfach konfigurieren.
Bei einem Smart Clip handelt es sich um
eine Filmsequenz, deren Instanzen Sequenzparameter erhalten, die für jede Instanz individuell eingestellt werden können. Mit diesen
Sequenzparametern wird das Objekt dann
beim Start des Films initialisiert. Sie geben auf
diese Art und Weise Eigenschaften und Variablenwerte vor.
Die Verwendung eines Smart Clips besteht
normalerweise aus vier Schritten:
1. Filmsequenz erstellen
2. Sequenzparameter definieren (dann wird
aus der Filmsequenz ein Smart Clip).
3. Smart Clip im Film platzieren (dann erhalten
Sie eine oder mehrere Instanzen).
4. Sequenzparameter für jede Instanz einstellen
len.
Schaltfläche als Smart Clip
Sie haben für eine große Website einen Styleguide entwickelt. Dieser Styleguide enthält
verschiedene Gestaltungselemente, darunter
auch Schaltflächen, deren Beschriftung erst
beim Zusammenbauen der Website festgelegt
wird. Um zu verhindern, dass dafür das Symbol
bearbeitet und eventuell unabsichtlich verändert wird, erstellen Sie einen Smart Clip, der
einen Sequenzparameter für die Beschriftung
enthält.
Erzeugen Sie eine einfache Schaltfläche
(Einfügen • Neues Symbol).
Platzieren Sie die eben erstellte Schaltfläche
in eine Filmsequenz, und erstellen Sie einen
dynamischen Text oberhalb der Schaltfläche.
Weisen Sie dem Text die Variable »beschriftung« zu (Fenster • Bedienfelder • Textoptionen).
Erst wenn Sie der Filmsequenz Sequenzparameter zuweisen, erhalten Sie einen Smart
Clip. Die Sequenzparameter erstellen Sie, indem Sie die Filmsequenz in der Bibliothek auswählen und dort Optionen • Sequenzparameter definieren wählen. Dort geben Sie als
Dieses Beispiel
finden Sie auch
auf der CDROM zum
Buch.
Beispiele für Smart Clips
Im Lieferumfang von Flash sind einige Smart
Clips enthalten, anhand derer Sie dieses Konzept erlernen können. Unter Fenster • Allgemeine Bibliotheken finden Sie die Bibliothek
Smart Filmsequenzen, die z. B. eine Listbox
auf der Basis von Smart Clips enthält. In der
Bibliothek Lernende Objekte hat Macromedia
einige Smart Clips für WBTs (Web Based Training oder webbasiertes Lernen) zusammengefasst. Natürlich finden Sie auch auf der CDROM zum Buch Dateien zu diesem Thema.
Filmsequenzen
.
253
Abbildung 5 Sequenzparameter definieren
Parameter den Namen »beschriftung« ein, da
dies der zu steuernde Parameter ist.
Nachdem Sie eine Filmsequenz mit Sequenzparamtern erstellt haben, verwenden Sie
diese wie eine normale Filmsequenz in Ihrem
Film. Es gibt nur einen Unterschied: Über das
Bedienfeld Sequenzparamter (Fenster •
Bedienfelder • Sequenzparameter) legen Sie
den Wert für alle definierten Parameter fest.
Die Werte werden aber erst dann »umgesetzt«, wenn der Film veröffentlicht oder getestet wird (Steuerung • Film testen).
Sequenzparameter festlegen
Um aus einer Filmsequenz einen Smart Clip zu
machen, benötigen Sie Sequenzparameter. Dabei handelt es sich um nichts anderes als Variablen und Eigenschaften, die später über das
Bedienfeld Sequenzparameter eingestellt werden können und dann in der Filmsequenz gesetzt werden.
Die Sequenzparameter (engl. Clip Parameters) legen Sie in der Bibliothek über Optio-
254
nen • Sequenzparameter definieren fest.
Über die Plus- und Minus-Schaltflächen fügen
Sie neue Parameter hinzu oder löschen vorhandene: Änderungen wirken sich nur aus,
wenn Sie den Smart Clip erneut im Film platzieren. Der Name bestimmt, welche Variable in
der Filmsequenz gesetzt wird (Sie können an
dieser Stelle sogar Eigenschaften angeben und
so über die Sequenzparameter z. B. die Größe
festlegen). Im Feld Wert geben Sie die möglichen Eingaben für die Variable vor; diese sind
vom Typ abhängig:
Default (Standard) erlaubt beliebige Texte
und Zahlen.
Array (Feld) ermöglicht es, eine Menge von
Einträgen (engl. Items) festzulegen. Der Benutzer kann auch weitere Items hinzufügen.
Den Standardwert (Standard-Offset) geben
Sie ebenfalls vor: Flash fängt hierfür bei null
zu zählen an.
Object steht für ein Objekt, dessen Eigenschaften Sie definieren. Der Benutzer des
Smart Clips gibt die Werte der Eigenschaf-
ActionScript
.
ten dann selbst an (siehe Selbst definierte
Objekte, Seite 266).
List steht für eine Liste von Werten. Diese
Liste geben Sie vor, und der Benutzer sucht
sich später den passenden Eintrag aus. Den
Standardwert (Standardt-Offset) geben Sie
ebenfalls vor: Flash fängt hierfür bei null zu
zählen an.
Bei den Typen Array, Object und List
wechseln Sie zur Angabe der Werte durch
Doppelklick in ein neues Fenster. Dort können
Sie diese Werte angeben, löschen und ordnen.
Es ist sehr praktisch, dass Sie zur Eingabe
der Werte für die von Ihnen definierten Sequenzparameter nicht auf das eher »unerotische« Bedienfeld Sequenzparameter zurückgreifen müssen: Sie können einen speziellen
Flash-Film erstellen
erstellen, der dann in diesem Bedienfeld angezeigt wird und die notwendigen
Eingaben entgegennimmt. Alles, was Sie dafür
brauchen, ist eine Filmsequenz mit dem Instanzennamen »xch« in der benutzerdefinier-
ten Oberfläche (xch steht für exchange, was
soviel wie Austausch bedeutet). Alle Sequenzparameter werden automatisch in dieser Instanz initialisiert und mit den Standardwerten
belegt. Eine Änderung in diesem Film ändert
auch den zugehörigen Sequenzparameter.
Damit die benutzerdefinierte Oberfläche
auch funktioniert, muss sie noch als Flash-Film
innerhalb der Sequenzparameter angegeben
werden. Ärgerlich ist, dass sich die Größe des
Flash-Films hier nicht vorgeben lässt. Wenn
das Bedienfeld Sequenzparameter sehr klein
ist, wird die benutzerdefinierte Oberfläche im
Rahmen dieses Bedienfelds auch entsprechend
klein angezeigt.
Das Sperren der Instanz im Fenster
Sequenzparameter definieren verhindert,
dass der spätere Benutzer des Smart Clips die
Variablennamen bearbeiten kann. So lässt sich,
wie in den meisten Fällen gewünscht, nur der
Wert einstellen.
Filmsequenzen
.
Ein Beispiel
finden Sie auf
der CD-ROM
zum Buch.
255
Oberflächenelemente
Wie kann ich Oberflächenelemente erzeugen?
Nicht immer reichen die Standardelemente wie
Schaltflächen und Textfelder zur Gestaltung aus.
Eigene Oberflächenelemente (z. B. Pop-up-Menüs, Fenster und Checkboxen) zu erstellen, ist
jedoch sehr einfach: Man muss nur wissen, wie!
Da es eine unerschöpfliche Menge an Oberflächenelementen gibt, kann hier nur eine kleine Auswahl präsentiert werden. Im Internet
gibt es jedoch Hunderte von Tutorials für weitere Elemente.
Diese Schaltfläche erhält die Aktion play, sobald der Benutzer die Maus auf ihr loslässt (on
(release)).
Fenster und Drag and Drop
Checkboxen
왗
Dieses Beispiel
finden Sie auch
auf der CDROM zum
Buch.
Bei Checkboxen (Kontrollkästchen) handelt es
sich um Elemente, die aktiviert und deaktiviert
werden können. Häufig kommen Checkboxen
als kleine Kästchen in Formularen zum Einsatz,
um z. B. Interessengebiete anzugeben.
Checkbox erstellen
Erstellen Sie eine Filmsequenz, die genau zwei
Bilder lang ist.
Eine Checkbox besteht aus einem aktivierten und einem deaktivierten Zustand. Platzieren Sie diese beiden Zustände hintereinander
in die Filmsequenz.
Damit die Checkbox nicht von alleine an
und aus geht, müssen Sie in beide aufeinander
folgenden Bilder die Aktion stop platzieren.
Um die Checkbox fertig zu stellen, benötigen Sie nur noch eine Schaltfläche, die in beiden Zuständen genau auf der Checkbox liegt.
256
Egel ob es sich um Fenster wie bei einem Windows- oder Macintosh-Computer oder um ein
anderes ziehbares Element handelt, die nötigen ActionScript-Befehle sind immer die gleichen.
Um ein Drag and Drop zu programmieren,
erzeugen Sie zunächst eine Filmsequenz, welche die gewünschten Grafiken und Animationen des zu ziehenden Objektes beinhaltet.
Erstellen Sie eine Schaltfläche, die Sie in die
Filmsequenz platzieren. Der aktive Bereich der
Schaltfläche bestimmt, wo der Benutzer klicken muss, um das Objekt durch die Gegend
zu ziehen. Damit die Filmsequenz ziehbar
wird, müssen Sie diese bei einem Mausklick an
den Mauszeiger binden. Das machen Sie über
die Aktion startDrag in der Schaltfläche. Damit
die Filmsequenz an einer beliebigen Stelle losgelassen werden kann, muss die Bindung an
den Mauszeiger mit dem Loslassen der Maustaste wieder aufgehoben werden. Dies errei-
ActionScript
.
왗 Abbildung 1
Zeitleiste für Checkboxen
chen Sie durch die Aktion stopDrag. Das komplette Skript sollte dann so aussehen:
on (press) {
this.startDrag();
}
on (release, releaseOutside) {
this.stopDrag();
}
Da es bei sehr schnellen Mausbewegungen
zu einem Loslassen auch außerhalb der definierten Schaltfläche kommen kann, wird die
Bindung an den Mauszeiger auch in diesem
Fall (release outside) aufgehoben – sonst kann
es passieren, dass die Filmsequenz noch an
dem Mauszeiger hängt, obwohl der Anwender
gar keine Maustaste mehr drückt.
Unsichtbare Schaltflächen leichter
verwenden
Eine unsichtbare Schaltfläche lässt sich leichter
platzieren, wenn Sie das Menü Steuerung •
Schaltflächen aktivieren ausschalten. Dann
wird der aktive Bereich der Schaltfläche türkis
dargestellt. Im fertigen Film ist der aktive Bereich natürlich weiterhin unsichtbar.
Menüs
Der erste Gedanke bei der Erstellung eines
Menüs, in den gedrückten Zustand einer
Schaltfläche weitere Schaltflächen für die einzelnen Menüpunkte zu platzieren, lässt sich
leider nicht umsetzen! Schaltflächen innerhalb
einer Schaltfläche funktionieren nicht. Ein hierarchisches Menü ist nur möglich, indem beim
Anwählen des Menüs (geschlossen) an eine
Stelle mit den Menüpunkten gesprungen wird
(geöffnet): Sie wechseln bei einem Menü einfach zwischen zwei Zuständen hin und her.
Dabei ist es egal, ob es sich um ein Pop-upoder Pull-down-Menü handelt.
Das Menü in eine Filmsequenz »verpacken«
Auch wenn in diesem Beispiel das Menü direkt
in der Zeitleiste des Films angelegt wird, kann
es geschickter sein, das Menü in einer Filmsequenz abzulegen: Die Vorteile sind, dass die
Zeitleiste des Films übersichtlicher wird, da
dort für das Menü nur noch ein Symbol gebraucht wird, und dass sich das Menü auch an
verschiedenen Stellen nutzen lässt, ohne die
Datei wesentlich zu vergrößern.
Oberflächenelemente
.
257
Menü
In diesem Beispiel wird ein Menü erstellt, das
drei Unterpunkte bietet. Das Menü soll sich ähnlich einem Standardmenü unter Windows oder
auf Macintosh-Computern verhalten.
➊
➌
➋
1. Erstellen Sie die Zustände des Menüs
Zuerst wird die Zeitleiste des Films in Bereiche
für das geschlossene ➊ und für das geöffnete ➋
Menü unterteilt. Jeder Bereich beginnt mit einem Schlüsselbild (Einfügen • Schlüsselbild),
das im ersten Bereich mit PopUp geöffnet und
im zweiten Bereich mit PopUp geschlossen bezeichnet wird. In den beiden Schlüsselbildern
verhindern Sie mit der Aktion stop, dass der Film
einfach durchläuft.
2. Legen Sie das Menü an
Als Nächstes benötigen Sie Schaltflächen für das
Menü und die Menüpunkte. Sie können für jeden Punkt eine neue Schaltfläche erstellen. Es
reicht aber aus, wie in diesem Beispiel nur eine
einzige Schaltfläche zu definieren und diese
mehrmals zu verwenden.
Die Schaltfläche zur Menüauswahl platzieren
Sie so in eine eigene Ebene ➌, dass Sie in beiden
Bereichen der Zeitleiste zu sehen ist. Zusätzlich
weisen Sie der Schaltfläche folgendes Skript innerhalb des ActionScript-Editors zu (Fenster •
Aktionen):
on (press, keyPress "k") {
gotoAndStop ("PopUp geöffnet");
}
Dieses ActionScript bewirkt, dass das geöffnete Menü dargestellt wird, sobald entweder
mit der Maus auf die Schaltfläche geklickt oder
(K) gedrückt wird.
258
ActionScript
.
➍
Üblicherweise öffnen sich Menüs, sobald man
mit der Maus darauf klickt (press). Schaltflächen
und Menüpunkte reagieren normalerweise erst
dann, wenn die Maustaste wieder losgelassen
(release) wird.
3. Erstellen Sie die Menüpunkte
Die Schaltflächen für die Menüpunkte platzieren
Sie innerhalb des Bereichs PopUp geöffnet ➍,
da Sie auch nur dort sichtbar sein sollen. Zusätzlich weisen Sie allen Schaltflächen folgende Aktionen zu (Fenster • Aktionen).
➎
on (release, keyPress "b") {
// Platzieren Sie hier die
auszulösenden Aktionen!
gotoAndStop ("PopUp geschlossen");
}
Dieses ActionScript bewirkt, dass die gewünschten Aktionen ausgeführt werden und sich
das Menü schließt, sobald entweder mit der
Maus oder der Tastatur ein Menüpunkt ausgewählt wird. Für den letzten Menüpunkt ➎
Flashforum sieht das Skript dann wie folgt aus.
on (release, keyPress "f") {
getURL ("http://www.flashforum.de",
"_self");
gotoAndStop ("PopUp geschlossen");
}
Oberflächenelemente
.
259
➏
260
4. Entdecken Sie die Probleme mit dem Menü
Eigentlich sollte Ihr Menü jetzt funktionieren.
Wenn Sie es testen (Steuerung • Film testen),
dürften Ihnen aber zwei Probleme auffallen. Erstens: Das Menü lässt sich nicht mit gedrückter
Maustaste bediene. Sie müssen immer zuerst das
Menü durch einen Klick öffnen und dann einen
Menüpunkt anklicken. Und zweitens: Das Menü
schließt sich nur, wenn ein Menüpunkt ausgewählt wird.
Das erste Problem lösen Sie, indem Sie alle
Schaltflächen als Menüelement behandeln. Wenn
diese Option aktiviert ist, lässt die gedrückte
Schaltfläche zu, dass auch andere Schaltflächen
noch auf die gedrückte Maus reagieren können.
Diese Option finden Sie im Bedienfeld Instanz
für die Schaltflächen (Modifizieren • Instanz
oder Fenster • Bedienfelder • Instanz).
Auch das zweite Problem lässt sich lösen. Dafür platzieren Sie eine unsichtbare Schaltfläche in
eine Ebene unterhalb des geöffneten Menüs.
Eine unsichtbare Schaltfläche legen Sie an, indem Sie in einem Schaltflächensymbol nur den
aktiven Bereich ➏ verwenden. Dies bewirkt,
dass die Schaltfläche zwar auf die Maus reagiert
(Aktivzustand), aber nicht sichtbar ist. Für dieses
Beispiel sollten Sie einen rechteckigen aktiven
Bereich wählen, dessen Größe unwichtig ist, da
die Schaltfläche sowieso noch im Film auf die
passende Größe skaliert wird.
ActionScript
.
Die unsichtbare Schaltfläche platzieren Sie im
Bereich geöffnet innerhalb einer Ebene unter
dem Menü. Sie sollten die Schaltfläche möglichst
großzügig skalieren, damit der Benutzer das
Menü mit einem beliebigen Klick wieder schließen kann. Innerhalb der Instanzeneigenschaften
stellen Sie auch diese Schaltfläche auf Als
Menüelement behandeln und weisen ihr folgende Aktionen zu:
on (press, release) {
gotoAndStop ("PopUp geschlossen");
}
Dieses ActionScript bewirkt, dass sich das
Menü schließt, sobald neben die Menüpunkte
(auf die unsichtbare Schaltfläche) geklickt wird.
5. Testen Sie das Menü
Jetzt ist das Menü fertig. Da die verwendeten
Mausereignisse in der Entwicklungsumgebung
aber nicht korrekt funktionieren, müssen Sie den
Film testen (Steuerung • Film testen), um alles
betrachten zu können.
Kombiniert mit animierten Schaltflächen können Sie die Qualität Ihrer Menüs noch weiter erhöhen.
Oberflächenelemente
.
261
Funktionen und Objekte
Weitere nützliche Konzepte von ActionScript
Eine Programmiersprache verwendet eine ganzeReihe an Konzepten, die natürlich auch nicht in
ActionScript fehlen dürfen. Zwei der wichtigsten
und in Flash 5 neuen Funktionen werden in diesem Kapitel beschrieben.
In den vorigen Kapiteln haben Sie eine ganze
Reihe an Aktionen kennen gelernt. Diese Aktionen werden bei Objekten in Blöcke zusammengefasst, die Flash bei festgelegten Ereignissen (z. B. ein Mausklick) ausführt. Diese
Blöcke werden Handler (bearbeitet) genannt.
Komplexe »Programmstücke« lassen sich auf
eine weitere Art und Weise in Blöcke zusammenfassen: als Funktion.
Ebenfalls in den vorherigen Kapiteln haben
Sie Objekte kennen gelernt. Ein Objekttyp sind
z. B. Filmsequenzen (dann wird aber meistens
die englische Bezeichnung Movieclip verwendet). In Flash gibt es aber noch eine ganze Reihe weiterer Objekte; Sie können aber natürlich
auch eigene definieren.
Funktionen
Eine Funktion ermöglicht es, komplexe Skripts
immer wieder zu verwenden, ohne sie jedes
Mal komplett angeben zu müssen. Eine Funktion erhält einen Namen, über den sie aktiviert
wird – ähnlich einem Makro. Genauso ist es
auch bei Backbüchern, dort wird irgendwo die
FunkZubereitung von Hefeteig erklärt (Funktionsdefinition
tionsdefinition), der in den weiteren Rezepten
Funkimmer wieder verwendet wird (Funktionsaufruf
tionsaufruf): Es muss ja nicht unbedingt in jedem Rezept wieder genau angegeben werden,
wie Sie diesen Teig erstellen.
Funktionen
262
Funktion
Beschreibung
Boolean (Ausdruck)
Diese Funktion wandelt den angegebenen Ausdruck in einen booleschen Wert
um (TRUE oder FALSE).
escape(Zeichenkette)
Diese Funktion wandelt eine Zeichenkette in die URL-Schreibweise um. Das
heißt, Sonderzeichen werden mit einem Prozentzeichen gefolgt von einer hexadezimalen Zahl kodiert.
ActionScript
.
Funktion
Beschreibung
eval (Ausdruck)
Mit dieser Funktion haben Sie die Möglichkeit, den Bezeichner eines Objektes,
einer Eigenschaft oder einer Variablen dynamisch zu erzeugen und dann den
Wert zu ermitteln. Diese Funktion kann im Gegensatz zu JavaScript keine Anweisungen ausführen.
False
Diese Funktion steht für »falsch« bzw. »aus«. Mathematisch ist das der Wert 0.
GetProperty (Ziel,
Eigenschaft)
Mit dieser Funktion ermitteln Sie eine Eigenschaft einer Filmsequenz. Die Pfad
schreibweise ist aber vorzuziehen (siehe 246, Die Angabe von Zielen).
getTimer ()
Diese Funktion gibt die Zeit in Millisekunden (1/1000 Sekunde) an, die der FlashFilm bereits läuft.
getVersion ()
Diese Funktion gibt Informationen über den Flash Player und das Betriebssystems zurück. In Flash 4 gab es bereits eine entsprechende Variable mit der Bezeichnung $version.
isFinite(Zahl)
Diese Funktion ermittelt, ob es sich um eine endliche Zahl handelt (TRUE).
Unendliche Zahlen (FALSE) können z. B. bei der Division durch null entstehen.
isNaN(Zahl)
Diese Funktion ermittelt, ob es sich um eine Zahl handelt (TRUE). Andernfalls gibt
die Funktion den Wert FALSE zurück.
.maxscroll
Diese Funktion bestimmt für Textfelder die Anzahl der Zeilen. Das Textfeld wird
über den Variablennamen identifiziert. Falls es nur sichtbare Zeilen im Feld gibt,
hat varible.maxscroll den Wert eins. Jede weitere Zeile erhöht den Wert um
eins.
Newline
Diese Funktion steht für einen Zeilenumbruch.
Number (Ausdruck)
Diese Funktion wandelt den angegebenen Ausdruck in eine Zahl um. Im Gegensatz zu parseInt kann diese Funktion auch für den Flash Player 4 verwendet
werden.
ParseFloat(Zeichenkette)
Diese Funktion wandelt die angegebene Zeichenkette in eine Gleitkommazahl
um.
parseInt(Zeichenkette, basis) Diese Funktion wandelt die angegebene Zeichenkette in eine Gleitkommazahl
um. Die Basis ist optional und ermöglicht es, in anderen Zahlenräumen (z. B.
hexadezimal) zu arbeiten.
.scroll
Diese Funktion bestimmt für Textfelder die angezeigten Zeilen. Falls die erste
Zeile sichtbar ist, dann hat variable.scroll den Wert 1 (Standard).
String (Ausdruck)
Diese Funktion wandelt den angegebenen Ausdruck in eine Zeichenkette um.
targetPath (Filmsequenz)
Diese Funktion ermittelt den Zielpfad einer Filmsequenz in Punktnotation. Für
die »alte« Schreibweise mit Schrägstrichen verwenden Sie die Eigenschaft
_target.
True
Diese Funktion steht für »wahr« bzw. »an«. Mathematisch ist das der Wert 1.
unescape(Zeichenkette)
Diese Funktion wandelt die URL-Schreibweise in eine Zeichenkette um. Das
heißt, Prozentzeichen gefolgt von einer hexadezimalen Zahl werden in die entsprechenden Sonderzeichen umgewandelt.
updateAfterEvent()
Diese Funktion bewirkt, dass der Bildschirm unabhängig von der Abspielgeschwindigkeit neu gezeichnet wird. Diese Funktion wird innerhalb eines
onclip-Blocks verwendet. So lässt sich ein Objekt z. B. unabhängig von der Abspielrate weich über den Bildschirm ziehen.
Funktionen und Objekte
.
263
왘
왘
In Flash gibt es zwei Arten von Funktionen:
Funktionen, die in ActionScript vordefiniert
sind und überall verwendet werden dürfen.
Ihre eigenen Algorithmen und Programme
können Sie in Funktionen unterteilen und
so Module entwickeln, die Sie an verschiedenen Stellen immer wieder aufrufen.
Vordefinierte Funktionen
Einige der vordefinierten Funktionen aus Flash
4 sollten nicht mehr in Flash 5 verwendet werden, auch wenn sie noch existieren:
왘 Int: Besser ist es, die Funktion Number zum
Umwandeln zu verwenden.
왘 Random: Flash 5 bietet eine Zufallsfunktion
als Methode des Math-Objektes, die dem
ECMA-Standard entspricht.
왘 Alle Zeichenfolgenfunktionen: In Flash 5
gibt es das Stringobjekt zum Bearbeiten von
Zeichenfolgen.
In der vorstehenden Tabelle finden Sie alle
Funktionen, die in Flash 5 zur Verfügung stehen (mathematische Funktionen finden Sie als
Methoden bei dem Math-Objekt, Funktionen
zum Bearbeiten von Zeichenketten hat Macromedia als Methoden des Stringobjektes definiert).
stunden=datum.getHours();
minuten=datum.getMinutes();
sekunden=datum.getSeconds();
uhrzeit=stunden+":"+minuten+":"+
sekunden;
return uhrzeit;
}
Eine Besonderheit der Funktionen ist, dass
sie in derselben hierarchischen Reihenfolge
wie Variablen und Objekte liegen. Je nachdem,
wo die Funktion initialisiert war, muss sie über
z. B. _root.functionsname() , in diesem Beispiel
also _root.ermittleUhrzeit(), angesprochen
werden.
Case-Anweisung
Zwar gibt es in ActionScript keine Case-Anweisung, aber mit Hilfe einer selbst definierten
Funktion und ein wenig undokumentiertem
ActionScript kann das umgesetzt werden:
function case(a) {
b = (a==8) ?
"eight"
:(a==9) ?
"nine"
:(a==10) ?
왗
CD-ROM
Selbstdefinierte Funktionen
In Flash lassen sich beliebige Aktionen auch als
selbst definierte Funktionen zusammenfassen
(in Flash 4 gab es mit call eine ähnliche Aktion, die aber nicht mehr verwendet werden
sollte). Die folgende ermittelt die Uhrzeit
Uhrzeit:
"ten"
:(a==11) ?
"eleven"
:(a>11) ?
"eleven plus"
:
"default";
function ermittleUhrzeit () {
var datum;
trace(b);
}
var stunden, minuten, sekunden;
var uhrzeit;
datum=new Date();
264
Natürlich können Sie eine Case-Anweisung
auch durch If-Anweisungen nachbauen.
ActionScript
.
Objekte
Neben den Filmsequenzen gibt es seit Flash 5
eine ganze Reihe an Objekten. Falls es kein
Objekt für Ihren speziellen Fall gibt, können
Sie auch eigene Objekte definieren.
Je nach Objekttyp benötigen Sie in den
meisten Fällen einen so genannten Konstruktor
tor, um ein Objekt zu erzeugen und es dann
verwenden zu können. Normalerweise wird
dafür die Aktion new verwendet. Die Anweisung datum=new Date(); z. B. erzeugt ein Objekt mit dem Namen »datum«, das ein Datum
enthält. So ein Datumsobjekt besitzt Eigenschaften und Methoden, um es sinnvoll einzusetzen.
Vordefinierte Objekte
Objekt
Beschreibung
Array
Dieses Objekt ermöglicht Ihnen, Felder als Datenstrukturen anzulegen. Ein Feld erzeugen Sie z. B.
mit der Aktion feld = new Array(); . Ein neues Element fügen Sie mit feld.push(element); an das
Ende des Feldes.
Boolean
Dieses Objekt stellt boolesche Werte dar. Mit wert = new Boolean();
booleschen Wert.
Colors
Mit diesem Objekt lassen sich Filmsequenzen einfärben. Über farbe = new Color(filmsequenz);
erzeugen Sie eine Instanz des Colors-Objekts, und mit farbe.setRGB( 0xFF0000 ); färben Sie die
zugehörige Filmsequenz rot ein.
Date
Das Date-Objekt ermöglicht den Zugriff auf das Systemdatum und die Uhrzeit. Dieses Objekt entspricht dem ECMA-Standard und wird wie in JavaScript verwendet. Mit heute = new Date(); erzeugen Sie eine neue Instanz mit dem aktuellen Datum, deren Inhalt Sie über ausgabe=heute.
toString(); als Zeichenkette in eine Variable namens ausgabe schreiben.
Key
Das Key-Objekt bietet zahlreiche Methoden, um auf Tastatureingaben zu reagieren. Das KeyObjekt wird nicht instanziiert, sondern direkt über das Schlüsselwort Key angesprochen. Mit
Key.isDown(Key.BACKSPACE) ermitteln Sie z. B., ob (Löschen) gedrückt ist.
Math
Auch das Math-Objekt braucht nicht instanziiert zu werden. Im Math-Objekt ist eine ganze Menge
an wichtigen mathematischen Funktionen zusammengefasst. Den Sinus ermitteln Sie z. B. über
Math.sin (wert) .
Mouse
Das Mouse-Objekt bietet nur zwei Methoden, die ohne Initialisierung direkt genutzt werden können. Mouse.hide(); versteckt den Mauszeiger, und Mouse.show(); zeigt ihn wieder an.
MovieClip
Dieses Objekt bietet zahlreiche Methoden, um Filmsequenzen zu erzeugen, zu beeinflussen oder
Informationen von Filmsequenzen zu erhalten. Mit oben.swapDepths( unten ); wird z. B. eine oben
liegende Filmsequenz in der z-Reihenfolge mit einer unten liegenden Filmsequenz getauscht.
Number
Dieses Objekt kann für den Datentyp Zahl verwendet werden und entspricht dem gleichnamigen
JavaScript-Element.
Object
Dieses generische Objekt hilft bei der Erstellung von selbst definierten Objekten. In diesem Objekt
ist eine Grundfunktionalität für Objekte zusammengefasst.
erzeugen Sie einen neuen
Funktionen und Objekte
.
265
왘
Objektorientierung
Objekt
Beschreibung
Selection
Das Selection-Objekt bestimmt den Fokus bei Feldern, also auch die Tabulatorreihenfolge. Es lässt
sich darüber hinaus die Auswahl von Text innerhalb eines Feldes steuern. Für dieses Objekt gibt es
keinen Konstruktor, da immer nur ein Feld den Fokus haben kann.
Sound
Das Sound-Objekt ermöglicht es, Sounds mit ActionScript zu steuern. Zwar stehen keine Methoden
zur Synchronisation zur Verfügung, es können aber immerhin die Lautstärke und Balance beeinflusst
werden. soundobject = new Sound(); erzeugt einen neuen Sound. Über soundobject.attachSound
(soundID); wird ein Sound aus der Bibliothek zugeordnet. Die Lautstärke bestimmt soundobject.
setVolume(50);, und das Abspielen beginnt mit soundobject.start();.
String
An Stelle der Zeichenkettenfunktionen aus Flash 4 sollte das String-Objekt verwendet werden.
Dieses Objekt stellt zahlreiche Methoden zur Verwaltung von Zeichenketten bereit.
XML
Flash 5 ist in der Lage, XML-Dokumente zu verarbeiten. Das XML-Objekt bietet die dafür notwendigen Methoden.
XMLSocket
Das XMLSocket-Objekt verwenden Sie, um eine kontinuierliche Verbindung zu einem Server aufzubauen. So lassen sich z. B. Chats und Multiuser-Spiele realisieren.
Selbst definierte Objekte
Mit ActionScript lassen sich nicht nur vordefinierte Objekte verwenden. Sie können
auch eigene Objekte erzeugen. Die Objektorientierung in ActionScript basiert wie JavaScript und JScript auf dem ECMA-262-Standard. Alle Objekte besitzen einen Prototypen
(eine Vorlage): Es gibt nicht den Unterschied
zwischen Klassen und Objekten wie in Java:
ActionScript ist klassenlos.
In ActionScript gibt es nur Konstruktoren
(die somit die Funktion der Klassen übernehmen). Mit einem Konstruktor wird eine Objektinstanz erzeugt. Jede Funktion kann ein Konstruktor sein:
Skope (Gültigkeitsbereich)
Objekte haben genauso wie Filmsequenzen,
Variablen und Funktionen einen Gültigkeitsbereich: Je nachdem, wo sie definiert sind, müssen Sie über die Pfadschreibweise angesprochen werden (siehe Seite 246, Die Angabe von
Zielen).
266
function meinObjekt (meinparameter) {
this.meineeigenschaft =
meinparameter;
}
// Erzeuge neue Objektinstanz
meineInstanz = new
meinObjekt(meinwert);
Auf selbst definierte Konstruktorfunktionen
wird wie auf Filmsequenzen und Variablen zugegriffen. Sie müssen immer den richtigen Pfad
zum Gültigkeitsbereich der Funktion angeben.
Z. B. können Sie meineInstanz=new _root.
meinObjekt(); schreiben.
Sounds mit Beatnik abspielen
Falls Ihnen die Möglichkeiten zur Soundsteuerung nicht ausreichen, können Sie mit Flash
auch Beatnik nutzen. Umfangreiche Informationen finden Sie unter http://www.beatnik.
com/software/documentation/music_object/
general-reference/beatnik-and-flash.html.
ActionScript
.
Darüber hinaus gibt es noch die Konstruktoroperatoren »{« und »}«: meineInstanz=
{meineeigenschaft:meinparameter};. Diese ge-
schweiften Klammern erzeugen eine Instanz,
ohne dass extra eine Funktion als Prototyp benötigt wird.
Selbst definierte Objekte verwenden
In diesem Beispiel wird ein einfaches Objekt erstellt, das die wichtigsten Eigenschaften einer
Person aus der realen Welt enthält.
function person (vorname, nachname) {
this.vorname=vorname;
this.nachname=nachname;
}
on (release) {
// Erstelle Instanz chef
chef = new person("Bernd",
"Besserwisser");
// Erstelle Instanz angestellter
angestellter = new person();
angestellter.vorname = "Norbert";
angestellter.nachname = "Nörgler";
}
ausgabe="Hallo " + chef.vorname + " " +
chef.nachname +"!";
1. Prototyp erstellen
Für selbst definierte Objekte wird als Erstes eine
Vorlage benötigt, die auch gleichzeitig als Konstruktor dient. In den meisten Fällen sollten Sie
dafür eine Funktion definieren. Die Eigenschaften des Objektes werden direkt in dieser Funktion angegeben.
Beispiele finden Sie auch
auf der CDROM zum
Buch.
2. Instanz erzeugen
Um jetzt aus dem Prototypen mehrere Instanzen
zu erzeugen, benötigen Sie die Aktion new. Die
durch new erzeugte Instanz legen Sie dann in einer Variablen ab.
In diesem Skript wird ein Mal ein »Chef«
erstellt, dessen Eigenschaften direkt im Konstruktor gesetzt werden. Bei der Instanz für den
»Angestellten« werden diese Eigenschaften
nachträglich festgelegt.
3. Verwenden des Objektes
Auf die Eigenschaften des Objektes greifen Sie in
ActionScript über die Punktnotation zu. Wie bei
Filmsequenzen geben Sie zuerst den Pfad und
dann durch einen Punkt getrennt die Eigenschaft
an. Um z. B. den Namen des Chefs in die Variable ausgabe zu schreiben, könnten Sie die nebenstehende Aktion angeben.
Funktionen und Objekte
.
왘
267
Ein Objekt besitzt aber nicht nur Eigenschaften, sondern – wenn Sie das möchten – auch
Methoden. Z. B. könnte es bei einer Person die
Eigenschaften Vor- und Nachname geben,
wenn aber der gesamte Name benötigt wird,
ist es mühsam, ihn immer wieder aus den Eigenschaften zusammenzubauen. Dafür ist eine
Methode nützlich:
function person (vorname, nachname) {
// Eigenschaften
this.vorname=vorname;
this.nachname=nachname;
// Methoden
this.name=name;
chef = new person("Bernd",
"Besserwisser");
ausgabe="Hallo " + chef.name() +"!";
Diese Variante der Methodendefinition hat
aber einen Nachteil: Die zur Methode gehörende Funktion muss in jeder Instanz gespeichert werden. Es ist in den meisten Fällen besser, den »Prototypen« um die Funktion zu
erweitern, was der objektorientierten Programmierung aus Hochsprachen wie Java oder
C++ ähnelt (die objektorientierte Programmierung in Skriptsprachen wie JavaScript oder
ActionScript ist im direkten Vergleich sehr
gewöhnungsbedürftig):
}
function name () {
function person (vorname, nachname) {
return this.vorname+"
// Eigenschaften
"+this.nachname;
this.vorname=vorname;
}
this.nachname=nachname;
}
Um die Methode zu verwenden, genügt der
einfache Aufruf (zwar können Sie die Methode
auch ohne zugehöriges Objekt verwenden,
was aber möglichst vermieden werden sollte):
// Objekt erweitern
person.prototype.name=name;
function name () {
return this.vorname
+ " "+this.nachname;
}
Weitere Informationen
Artikel zur Objektorientierung finden Sie unter
http://developer.netscape.com/docs/manuals/
js/client/jsguide/obj2.htm (auch Vergleich zwischen Java und JavaScript) und http://www.tuchemnitz.de/urz/java/kba/JSObjekte.html
(Vergleich zwischen klassenbasierten objektorientierten Sprachen und klassenlosen objektorientierten Sprachen).
268
This
Dem Schlüsselwort this kommt eine große Bedeutung zu, denn mit ihm kann man das aktuelle Objekt selbst referenzieren, ohne seinen Namen zu kennen. Dies ist besonders dann von
Interesse, wenn man eine Funktion geschrieben
hat, die als Methode eines Objekts dienen soll.
Da der Name des Objekts in der Funktion nicht
immer bekannt ist, wäre es anders gar nicht
möglich, ihn zu verwenden. Stattdessen nutzt
man this. Innerhalb einer Methode bezieht sich
this auf das aufrufende Objekt selbst.
ActionScript
.
Um die Methoden und Eigenschaften eines
Objektes an ein anderes Objekt zu vererben,
wird ebenfalls der Prototyp gebraucht:
// Erbe vom XML-Objekt Methoden und
meinObjekt.prototype=new vaterobjekt();
// Erzeuge eine Objektinstanz
Wenn jetzt beim Zugriff auf eine Methode
oder Eigenschaft diese nicht gefunden wird,
untersucht Flash die Prototypen (__proto__) in
hierarchischer Reihenfolge. In dem folgenden
Beispiel wird ein neues XML-Objekt erzeugt,
das eigene Eigenschaften und Methoden besitzt und zusätzlich vom XML-Objekt erbt.
objekt = new meinXML();
// Erzeuge einen neuen Prototypen
(ähnlich einer Klasse)
function meinXML () {
this.load = "Überladene
Eigenschaft";
this.neueEigenschaft = "Neue
Eigenschaft";
Eigenschaften
meinXML.prototype = new XML();
// da die Methode load überladen ist,
kann kein XML mehr geladen werden!
objekt.load("meinDokument.html");
Wenn Sie in dem obigen Beispiel die neue
Definition der Methode load entfernen, geht
wieder alles ganz normal. Die Reihenfolge der
Vererbung ist entscheidend! Falls das XML-Objekt dem Prototypen hinzugefügt wird, können
Methoden überschrieben werden, da diese in
der __proto__-Reihenfolge später erscheinen.
Würde jedoch dem Prototypen des XML-Objektes eine Methode hinzugefügt, kann diese
nicht schon vorhandene Methoden überladen.
}
Alle Eigenschaften einer Objektinstanz
ermitteln
Nützlich zum Test ist ein Button mit den folgenden Aktionen, der die Eigenschaften einer
Objektinstanz ausgibt:
on (release) {
// Gib Eigenschaften aus
for (i in objektinstanz) {
trace (i+":"+ objektinstanz[i]);
}
}
Alle Elemente eines Objektes lassen sich mit
diesem Skript ermitteln, da sie in so genannten
assoziativen Feldern gespeichert werden.
Funktionen und Objekte
.
269
Formulare und Datenbanken
Zwischen einem Flash-Film und dem Rest der Welt Daten
austauschen
Falls Sie Daten in einem Flash-Film ermitteln,
dann möchten Sie diese sicherlich auch auf irgendeine Art und Weise speichern. Möglicherweise existiert auch eine Datenquelle, deren Inhalt Sie in einem Flash-Film darstellen möchten.
Dieses Kapitel zeigt Ihnen, worauf Sie dabei achten müssen.
Ein Flash-Film darf neben Animation, Sound
und Interaktion auch dynamische Daten enthalten. Diese Daten können in einem FlashFilm erfasst und ausgegeben werden. Beispiele
für dynamische Daten in einem Flash-Film
sind:
Highscore-Listen
Diskussionsforen
Formulare
Warenkörbe
Gästebücher
Börsenkurse
Staumeldungen
Wetter
Sicherheit
Mit den aktuellen Flash Plug-ins ist es aus Sicherheitsgründen leider nicht möglich, innerhalb eines Webbrowsers auf andere Domains
zuzugreifen. Ebenfalls können über eine HTTPVerbindung geladene Flash-Filme nicht auf die
270
Grundsätzlich zeigt Flash die Daten an oder
nimmt sie entgegen. Dafür werden in den
meisten Fällen (falls es sich um reine Texte
handelt) Formulare mit Textfeldern benötigt.
Flash bietet darüber hinaus noch eine ganze
Reihe an Aktionen, mit denen sich die Daten
überprüfen, verändern und auswerten lassen.
Die Daten wiederum werden meistens an
einen Server gesendet, der sie auswertet und
ein Ergebnis zurück zum Flash-Film liefert, wo
diese Daten visualisiert werden. In manchen
Fällen liefert der Flash-Film keine Daten zum
Server, sondern bezieht nur Informationen
(z. B. um die aktuellen Wetterdaten anzuzeigen).
lokale Festplatte zugreifen. Darüber hinaus ist
bis jetzt noch kein Weg bekannt, um mit einem Flash-Film Schaden anzurichten (und da
viele erfolglos danach gesucht haben, wird es
wohl auch keinen geben).
ActionScript
.
In Flash 5 sind neben den Aktionen zum Austausch von Textdaten noch XML-Funktionen
hinzugekommen. Zum einen dürfen die Textdaten in einer XML-Struktur vorliegen, was die
Kommunikation erleichtern kann, und zum anderen gibt es mit dem XMLSocket-Objekt jetzt
auch die Möglichkeit, eine kontinuierliche Verbindung mit einem Server aufzubauen, um
z. B. Multiuser-Spiele oder Chats zu realisieren.
Felder und Formulare
Die Erstellung eines Formulars ist simpel. Alles,
was benötigt wird, sind ein paar Textfelder.
Damit sich die Daten aber auch von einem Server beziehen oder an einen Server senden lassen, benötigt jedes Feld (egal ob dynamischer
Text oder Texteingabe) eine Variable
Variable.
Bis Flash 5 ist die Hierarchie der Felder
mehr oder weniger vom Zufall bestimmt. Die
Tabulatorreihenfolge für Textfelder und Schaltflächen wird vom Flash Player durch einen festen Algorithmus bestimmt. Grundsätzlich
werden die einzelnen Objekte bezüglich ihrer
linken oberen Ecke von links nach rechts und
dann von oben nach unten durchlaufen. Die
genaue Funktion zur Bestimmung der Reihenfolge wird auf der Website von Macromedia
(www.macromedia.com) in der Technote
14075 mit kx * x + ky * y beschrieben, wobei x
und y die horizontale und vertikale Koordinate
der linken oberen Ecke des Objekts bezüglich
der linken oberen des Films beschreiben. Falls
die Felder oder Schaltflächen in einer Filmsequenz liegen, wird dies berücksichtigt. Die
Werte für kx und ky sind konstant und betragen 1/3 für kx und 2 für ky. Falls ein Objekt verschoben wird, korrigiert Flash die Position in
der Tabulatorreihenfolge automatisch.
In Flash 5 gibt es mit dem Selection-Objekt
endlich eine Möglichkeit, diese Reihenfolge zu
beeinflussen. Mit Selection.getFocus(); ermitteln Sie, welches Feld gerade aktiviert ist.
Die Aktion gibt den genauen Namen der Variablen inklusive Level an. Mit Selection.
setFocus("variable"); setzen Sie den Fokus
auf das Feld mit der angegebenen Variablen.
E-Mail aus Flash versenden
Eine E-Mail lässt sich aus Flash sehr einfach
auch ohne CGI senden.
Platzieren Sie in ihren Film mehrere Felder,
um die Angaben für die E-Mail entgegenzunehmen. In diesem Beispiel sind die Felder mit
den Variablen to für den Empfänger, cc für
den Empfänger einer Kopie, subject für die
Betreffzeile und body für den Inhalt der E-Mail
versehen.
Erzeugen Sie eine Schaltfläche im Film mit
den folgenden Aktionen:
on (keyPress "<Tab>") {
feldname = Selection.getFocus();
trace (feldname);
if (feldname == "_level0.to") {
Selection.setFocus("cc");
} else if (feldname == "_level0.cc")
{
Selection.setFocus("subject");
} else if (feldname ==
"_level0.subject") {
Selection.setFocus("body");
} else if (feldname == "_level0.body") {
Selection.setFocus("to");
}
}
on (release, keyPress "<Enter>") {
getURL ("mailto:", "", "GET");
}
Formulare und Datenbanken
.
271
Dieses Skript bewirkt, dass Flash beim Drücken
des Tabulators immer wieder in das nächste
Feld springt. Hier muss beachtet werden, dass
Flash den Namen des Feldes anhand der zugeordneten Variable inklusive des gesamten Pfades bestimmt.
Durch Drücken von Eingabe oder Klicken
auf den Button wird dann eine E-Mail gesendet. Falls Sie andere Variablennamen verwenden müssen, können Sie auch folgendes Skript
angeben, um die URL zum Versenden von
E-Mails genau zu bestimmen:
on (release, keyPress "<Enter>") {
getURL ("mailto:"+to+"?cc="+cc+
"&subject="+subject+"&body=" +body);
}
Leider ist das hier vorgestellte Beispiel aber
nur als Notlösung geeignet! Wenn der Anwender nämlich kein E-Mail-Programm hat oder
das E-Mail-Programm nicht über die Angabe
E-Mail
Mit getURL lassen sich E-Mails versenden. Die
meisten Browser unterstützen das Erzeugen
einer E-Mail über die URL. Dass es sich bei der
angegebenen Adresse um eine E-Mail handelt,
erkennt der Browser an dem vorangestellten
»mailto:«. Diesem folgt die Adresse. Optional
kann auch der Name des Empfängers angegeben werden. Dann muss die Adresse aber in
Klammern (<>) stehen. Je nach Browser lassen
sich mit & getrennt noch weitere Angaben wie
subject, cc, body usw. machen. Die zusätzlichen Angaben werden durch ein ? von der
Adresse getrennt.
272
von »mailto:« aufgerufen wird, funktioniert es
nicht. Außerdem werden, je nach Variante, alle
Sonderzeichen in der URL-Schreibweise kodiert. Dies führt z. B. dazu, dass Leerzeichen
durch ein Plus dargestellt werden.
CGI-Kommunikation
Flash bot schon in den vorherigen Versionen
Möglichkeiten, um direkt auf beliebige URLs
und damit auch auf CGI-Skripts zuzugreifen.
Die Aktionen aus der Tabelle dürfen Sie in
Flash 5 für diese Aufgaben benutzen. Die Aktionen unterscheiden sich in erster Linie durch
das als Antwort erwartete Format.
Sehr interessant ist, dass alle genannten Aktionen nicht zwangsläufig ein CGI-Skript, sondern auch jede beliebige URL aufrufen können, solange das richtige Ergebnis von dieser
URL zurückgeliefert wird. Gerne wird das ge-
CGI
Das Common Gateway Interface (allgemeine
Vermittlungsrechner-Schnittstelle), kurz CGI,
ist die Schnittstelle zu Programmen auf einem
Webserver. Einmal aufgerufen übertragen diese Programme als Ergebnis meist ein HTMLDokument zurück an den Webbrowser. In
Flash haben Sie die Möglichkeit, Informationen zu ermitteln, die Sie in Variablen speichern. Diese Variablen können Sie von einem
CGI-Skript auswerten lassen.
Die meisten Anfragen im Internet werden
über CGI gesteuert. So lassen sich Daten aus
einer Datenbank abrufen, Bestellungen bei einem Versandhaus aufgeben oder einfach nur
ein Feedback für die Website ermitteln.
ActionScript
.
nutzt, um Texte (z. B. Nachrichten) extern zu
halten und bei Bedarf dynamisch in Flash einzuladen.
Scrolltext
Um Texte dynamisch in einen Flash-Film
einzubinden, gehen Sie wie in diesem Beispiel
für Flash 5, das der Augsburger Abiturient
Jonathan Dörr (www.get-the-flash.de) ursprünglich auf der Basis von Flash 4 im Flashforum (www.flashforum.de) veröffentlicht hatte, vor.
Erstellen Sie als Erstes einen dynamischen
Text, der im Bedienfeld Textoptionen die Parameter dynamischer Text, Mehrere Zeilen und
Wortumbruch erhält. Geben Sie für den Text
außerdem eine Variable an. Diese Variable
wird als Container für den zu ladenden Text
benötigt, das heißt, der Text wird in der Variablen abgelegt.
Weisen Sie dem Film im ersten Bild, in dem
sich das Textfeld befindet, die folgende Aktion
zu, damit der Text eingelesen wird:
loadVariables ("text.txt", "");
Flash lädt über diese Aktion die Textdatei,
die auch in einem Unterverzeichnis liegen
kann (z. B. news/text.txt). Für die Position geben Sie bitte »Ziel« an. Geben Sie sonst nichts
weiter an, damit die Zeitleiste, in der sich die
Aktion befindet, als Ziel verwendet wird.
Am Anfang der Textdatei (hier text.txt) muss
dieselbe Variable wie für das Textfeld angegeben werden. Direkt dahinter platzieren Sie
durch ein Gleichheitszeichen getrennt den
Text. Durch die Variable in der Textdatei weiß
Flash, in welches Feld es den Text laden soll.
Da die meisten Texte zu groß sind, um vollständig in einem Textfeld angezeigt zu werden,
gibt es die Möglichkeit, den Text auch in ein
kleineres Feld zu laden und ihn dann mit der
Hilfe von Schaltflächen zu scrollen (Heraufund Herunterschieben).
Dafür benötigen Sie eine Filmsequenz. Dort
werden zwei gleiche Schaltflächen eingefügt,
die jedoch unterschiedliche Aktionen erhalten.
Eine der Schaltflächen befindet sich oben
und ist zum Heraufschieben gedacht. Sie bekommt folgende Aktionen:
Dieses Beispiel
finden Sie auch
auf der CDROM zum
Buch.
on (press, dragOver, dragOut) {
_root.text.scroll = _root.text.scroll-1;
}
Für das Herunterschieben benötigen Sie
dieselben Aktionen, nur mit +1 auf der zweiten
Schaltfläche.
Damit sich der Text auch bei gedrückter
Maustaste herauf und herunter bewegt, wird
ein kleiner Trick benötigt, denn normalerweise
müsste für jeden Zeilenvorschub mühsam ein-
Aktionen für die Kommunikation über CGI
Aktion
Erwartetes Ergebnis
getURL
HTML-Dokument
loadMovie und loadMovieNum
Flash-Film (SWF-Datei)
loadVariables und loadVariablesNum
Daten vom Typ urlformencoded wie var1=wert1&var2=wert2 usw.
Formulare und Datenbanken
.
273
Abbildung 1
Bildanordnung für die Scrollleiste
zeln geklickt werden. Der Trick ist, dass die
Schaltflächen in einem darauf folgenden Bild in
einer neuen Ebene wiederholt werden. Dadurch wechselt Flash immer zwischen dem
ersten und zweiten Bild hin und her. Da die
Schaltflächen die Ereignisse »Drücken«, »Darüberziehen« und »Wegziehen« erhalten haben
und – was bis jetzt verheimlicht wurde – als
Menüelement behandelt werden (Fenster •
Bedienfelder • Instanz), wiederholt Flash die
Aktionen bei einer gedrückten Schaltfläche immer wieder.
Wenn Sie jetzt die Filmsequenz mit den
Schaltflächen im Film platzieren, sollte alles
fertig sein.
ASP, ColdFusion, JSP, Perl, PHP usw.
Als URL können Sie in Flash jederzeit auch ein
CGI-Skript angeben. Es ist dabei für Flash unerheblich, welche Sprache auf der Serverseite
eingesetzt wird. Für Flash zählt nur, was als Ergebnis vom Server zurück zum Flash-Film ge-
274
sendet wird. Diese Daten müssen das richtige
Format haben: Es sollten der MIME-Typ
application/x-www-urlformencoded eingestellt sein und die Variablen in der Form
var1=wert1&var2=wert2 übergeben werden.
Dabei müssen Sie unbedingt darauf achten,
dass keine Leerzeichen, Zeilenumbrüche oder
HTML-Tags integriert werden. Für den Test hat
es sich als nützlich erwiesen, die serverseitigen
Skripts erst einmal über ein normales HTMLFormular zu testen. Das gelieferte Ergebnis
können Sie sich dann im Browser anschauen
und dort auch den Quelltext auf eventuell unerwünschte Zeichen überprüfen.
Falls Sie Daten an den Server senden möchten, ist das auch nicht wesentlich anders als
das Senden von normalen HTML-Formularen
an einen Server. Für alle in der Tabelle »Aktionen für die Kommunikation über CGI« genannten Befehle dürfen Sie zwischen dem Versenden der Variablen mit POST und GET
wählen oder auf das Versenden verzichten. Bei
der POST-Methode werden die Werte nicht
zusammen mit der URL, sondern separat übertragen, wodurch deutlich größere Informationsmengen möglich sind. Bei der GETMethode können Sie die Werte – je nach
Webbrowser – in der URL-Zeile ablesen. Flash
versendet immer alle Variablen aus der Zeitleiste, auf die sich die Aktion bezieht.
Bei den Aktionen loadMovie, loadMovieNum,
loadVariables und loadVariablesNum können
Sie darüber hinaus auch angeben, wohin das
Ergebnis im Flash-Film geladen werden soll. In
der Praxis hat sich gezeigt, dass es meistens
besser ist, alle Variablen eines Formulars in einer Filmsequenz abzulegen, die dann als Container für die relevanten Variablen dient. So
eine Filmsequenz darf auch völlig leer sein,
Hauptsache, ist, sie besitzt einen eindeutigen
ActionScript
.
Instanzennamen. So lassen sich die Daten
dann gezielt ohne unnötige andere Variablen
versenden und empfangen.
Datenbanken
Da Flash nicht direkt auf Datenbanken zugreifen kann, bleibt Ihnen nichts anderes übrig, als
entweder ein Werkzeug wie den Generator zu
verwenden oder die gesamte Funktionalität
der Datenbankschnittstelle in das CGI-Skript
zu verlagern. Damit handelt es sich hier nicht
mehr um ein Flash-Problem, sondern um
serverseitige Programmierung
Programmierung.
XML
Seit Flash 5 beschränkt sich der Datenaustausch nicht mehr auf einfache Texte im URLFormat: Flash versteht jetzt auch XML. Sie
können in Flash XML-Dokumente erzeugen,
diese versenden und natürlich auch wieder
Probleme!
Bei der Kommunikation mit einem Server gibt
es eine Menge Probleme, die zum größten Teil
durch die verschiedenen Betriebssysteme und
Webbrowser verursacht werden. Die POSTMethode funktioniert z. B. nicht mit dem Internet Explorer 4.5 auf Macintosh-Computern
Macintosh-Computern, da
dieser kein POST beherrscht. Alternativ kann
hier entweder GET oder das XMLSocket-Objekt verwendet werden.
Ein weiteres Problem ist, dass Flash aus Sicherheitsgründen nur auf die Domain der
SWF-Datei zugreifen kann. Falls Sie z. B. keine
CGI-Skipts auf Ihrem Server installieren dürfen,
können Sie auch keine fremden Skripts unter
anderen Domains verwenden.
empfangen. Flash unterscheidet zwei Arten
der Verarbeitung von XML:
Mit dem XML-Objekt können Sie ähnlich
wie mit loadVariable Daten zu einer URL
schicken und von diesem auch Daten laden.
Im Unterschied zu loadVariables müssen
die Daten im XML-Format vorliegen.
Das XMLSocket-Objekt ermöglicht es, kontinuierliche Verbindungen mit einem Server
aufzubauen. Dadurch kann die Antwortzeit
des Servers deutlich erhöht werden. Dies
ermöglicht z. B. echtzeitgesteuerte Mehrbenutzeranwendungen.
XML-Objekt
Mit Hilfe des XML-Objektes können Sie
XML-Dokumente in Flash einladen
XML-Dokumente in Flash erstellen und bearbeiten
XML-Dokumente aus Flash an einen Server
senden
Zwischenzeitlich gab es dann noch einen
defekten Flash Player, der an den Anfang der
zum Server übertragenen Daten noch ein zusätzliches & platzierte. Dieses kaufmännische
Und sollte bei Bedarf auf der Serverseite von
Ihrem Skript herausgefiltert werden.
Falls die Kommunikation immer noch nicht
funktioniert, dann liegt das meistens daran,
dass in Flash nicht die richtigen Pfade für die
Filmsequenzen und die in ihnen enthaltenen
Variablen angegeben sind oder dass das zurückgelieferte Ergebnis (nur bei loadVariables
und loadVariablesNum) eventuell Leerzeichen,
HTML-Code oder Zeilenumbrüche enthält.
Formulare und Datenbanken
.
275
Dieses Beispiel
finden Sie auch
auf der CDROM zum
Buch.
Die wesentlichen Aktionen zum Laden eines
XML-Dokumentes sind immer dieselben. Sie
benötigen als Erstes ein Objekt, das die XMLDaten verwaltet und entsprechende Methoden bereitstellt (dokument=new XML( ); ). Damit
auf das hoffentlich erfolgreiche Laden eines
Dokumentes reagiert werden kann, weisen Sie
mit z. B. dokument.onLoad=geladen; dem Objekt
eine Funktion zu. Diese Funktion enthält den
Programmcode, der ausgeführt werden soll,
sobald das Laden geglückt oder fehlgeschlagen
ist:
function geladen (success) {
if (success) {
trace ("Erfolg");
} else {
trace ("Misserfolg");
}
}
Jetzt fehlt nur noch, dass das Laden des Dokumentes auch gestartet wird. Dies geschieht
z. B. mit der Aktion dokument.load("daten.
xml");.
Internet Explorer 4.5 auf MacintoshComputern
Da XML.load, XML.send und XML.sendAndLoad
über HTTP arbeiten, funktionieren sie nicht mit
dem Internet Explorer 4.5 auf Macintosh-Computern. XMLSocket arbeitet nicht über HTTP,
sondern erzeugt eine kontinuierliche Verbindung über TCP/IP und benötigt einen speziellen, meist in Java oder C++ geschriebenen Server. Aus diesem Grund funktioniert XMLSocket
auch mit dem Internet Explorer 4.5.
276
Minibrowser
Da HTML-Dokumente von der Struktur her
XML-Dateien ähneln, können über diesen Weg
auch HTML-Dokumente dynamisch in Flash
eingeladen werden. Da Flash 5 in der Lage ist,
einfache HTML-Tags darzustellen, lässt sich so
ein kleiner Webbrowser auf einfache Art und
Weise erstellen.
Platzieren Sie in Ihren Film ein Textfeld, das
Sie mit der Variable ausgabe verbinden (Fenster • Bedienfelder • Textoptionen). Damit
dieses Feld HTML-Formate korrekt darstellen
kann, müssen Mehrere Zeilen, HTML und
Wortumbruch aktiviert sein. Falls Sie parallel
auch noch den Quelltext betrachten möchten,
dann erzeugen Sie ein zweites Feld, das sich
ebenfalls auf die Variable ausgabe bezieht. Im
Unterschied zum ersten Feld muss hier die Option HTML deaktiviert sein.
Damit der Benutzer auch eine URL angeben
kann, müssen Sie noch ein Textfeld für die Eingabe der Adresse anlegen. Für die Variable bietet sich hier z. B. der Name »url« an.
In Ihrem Film benötigen Sie jetzt noch eine
Schaltfläche, die das Laden des in der Adressleiste eingegebenen Dokumentes startet. Geben Sie dieser Schaltfläche die folgenden Aktionen:
on (release, keyPress "<Enter>") {
dokument=new XML( );
dokument.onLoad=geladen;
dokument.load(url);
}
Dieses Skript bewirkt, dass sowohl bei
Mausklick als auch bei Eingabe ein neues XMLObjekt erzeugt wird. Das Laden von Inhalt
startet dann die Methode load. Nach Abschluss des Ladens wird die Funktion geladen
ActionScript
.
aufgerufen. Diese Funktion erhält den folgenden Code:
function geladen (success) {
if (success) {
ausgabe=dokument.toString();
} else {
trace ("No");
}
}
Durch dokument.toString() wird der Inhalt
des Objektes dokument in eine Zeichenkette
verwandelt und kann dann in einem Feld angezeigt werden.
Grundsätzlich funktioniert dieser Minibrowser. Leider interpretiert Flash aber XMLDateien sehr großzügig. Z. B. werden auch Zeilenumbrüche im Quellcode zwischen den Tags
berücksichtigt und als Knoten im XML-Baum
abgelegt (die HTML-Beispieldatei auf der CDROM zum Buch ist deshalb nur einzeilig). Auch
werden nicht immer alle Inhalte des Objektes
über die Methode toString in eine Zeichenkette verwandelt (dies hängt unter anderem
auch von der Tiefe des XML-Baums ab). Flash
bietet Ihnen zur Lösung dieser Probleme eine
ganze Reihe von Methoden. Dies führt aber in
den meisten Fällen zu einem deutlich komplexeren ActionScript.
XMLSockets
Bei dem XMLSocket-Objekt handelt es sich um
eine Sammlung von Methoden, mit denen sich
direkte Verbindungen über ein Socket mit einem Server aufbauen lassen. Dafür wird ein
spezieller Server benötigt. Meistens wird dieser Server in Java (java.net.ServerSocket Klasse) oder C++ (BSD Socket Library) programmiert. Das verwendete Protokoll ist TCP
Stream Sockets, nicht UDP. Mit den aktuellen
Flash Plug-ins ist es aus Sicherheitsgründen
nicht möglich, innerhalb eines Webbrowsers
auf andere Subdomains zuzugreifen, was auch
für XMLSocket gilt. XMLSocket-Objekte haben
darüber hinaus die Beschränkung, dass nur
Ports größer oder gleich 1024 verwendet werden dürfen. So wird der Zugriff über telnet,
ftp, www, finger usw. verhindert. Alle gesendeten Daten müssen mit einem Nullbyte beendet werden, damit Flash das »Paket« erkennt. Ebenso sendet Flash alle Daten mit
einem angehängten Nullbyte. Weitere Informationen zu Sockets finden Sie unter http://
snickers.ek.univ.gda.pl/java/networking/
sockets/index.html.
Formulare und Datenbanken
.
277
Flashprinting SDK
Drucken im Web
Mit Flash lassen sich z. B. Wegbeschreibungen,
Rechnungen, Bestellscheine, Grußkarten und
Produktinformationen aus einer Flash-Anwendung drucken.
Mit den Flash Playern (Browser-Plug-in),
die seit dem 16. Dezember 1999 zum Download bereitstehen, ist es nun möglich, Dokumente über das Web auf Papier zu bannen. Im
Gegensatz zu den sehr unflexiblen Druckmöglichkeiten direkt aus dem Browser oder
über JavaScript (window.print()) erfolgt der
Ausdruck in hoher Qualität und individuell gesteuert.
Die gesamte Druckfunktionalität wurde von
Macromedia im Flash Player untergebracht, so
dass auch ältere Flash-Filme ohne Änderung
von dieser Erweiterung profitieren. Im Kontextmenü eines Flash-Films (rechte Maustaste
unter Windows oder (Strg) + Maustaste auf
Macintosh-Computern) wird bei dem aktuellen Plug-in der Punkt Drucken angezeigt, über
Seit wann kann Flash drucken?
Die Druckfunktion steht zurzeit nur auf Macintosh-Computern (Release 4.0.20 des Flash
Players) und unter Windows 9x/NT (Release 4.0.25 des Flash Players) zur Verfügung.
Seit Flash 5 lassen sich auch aus einem Standalone-Projektor Dokumente auf einem Drucker ausgeben (das britische Unternehmen
»3rd eye solution« bietet für Flash 4 den
JPrinter unter www.flashjester.de an).
278
den sich jedes Bild des Films ausgeben lässt.
Alphakanäle (Transparenzen) werden hier jedoch ignoriert.
Auch direkt aus einem Flash-Film lässt sich
drucken, indem die Aktion GetURL (Flash 4) mit
der Angabe des Parameters print: innerhalb
der URL oder die Aktion print (Flash 5) verwendet wird. Falls Alphakanäle verwendet
werden, sollte das Dokument als Bitmap ausgegeben werden (printAsBitmap), da die Transparenzen sonst verloren gehen. Flash bietet
zahlreiche Möglichkeiten, um das zu druckende Dokument zu gestalten. Der ganze Film
oder einzelne Filmsequenzen lassen sich ausgeben und die zu druckenden Bilder und auch
die zu druckenden Bereiche können frei festgelegt werden.
Macromedia hat die Funktionalität im unter
www.macromedia.com/software/flash/open/
webprinting/ erhältlichen »Flash 5 Print Authoring Kit« beschrieben (eine deutsche Version
soll mit Erscheinen dieses Buches erhältlich
sein). Etwas ausführlicher sind die Erklärungen
in dem entsprechenden PDF-Dokument zu
Flash 4, das ebenfalls auf der Macromedia
Website erhältlich ist.
ActionScript
.
왗
Abbildung 1
Die Aktion print
Drucken mit ActionScript
Das Drucken mit ActionScript ist prinzipiell
sehr einfach zu realisieren. Je nachdem, mit
welcher Flash-Version Sie arbeiten, benötigen
Sie folgende Aktionen:
왘 getURL mit der URL print:, um den Inhalt
des Flash-Films als Vektorzeichnung zu drucken (Transparenzen gehen verloren). Diese
Aktion funktioniert sowohl in Flash 4 als
auch in Flash 5.
왘 getURL mit der URL printAsBitmap:, um den
Inhalt des Flash-Film als Bitmap zu drucken
(Transparenzen bleiben erhalten, es wird
aber mehr Arbeitsspeicher benötigt). Diese
Aktion funktioniert sowohl in Flash 4 als
auch in Flash 5.
왘 Die Aktion print ist erst seit Flash 5 möglich. Für diesen Befehl können Sie direkt angeben, ob Sie den Film als Vektorzeichnung
ohne Transparenzen (print) oder als Bitmap
(printAsBitmap) ausgeben möchten.
Falls Sie nicht den gesamten Film, sondern
nur eine Filmsequenz drucken möchten, dann
geben Sie bei der getURL-Variante für den Para-
meter Fenster den Instanzennamen der Filmsequenz an. Bei der Aktion print wählen Sie
im Feld Position entweder eine Stufe oder
eine Filmsequenz als Ziel.
Druckbereich einschränken
Normalerweise druckt Flash alle Bilder einer
Zeitleiste oder bietet zumindest alle Bilder im
Drucken-Dialogfenster zur Ausgabe an. Sie
können die Ausgabe aber auf spezielle Bilder
beschränken oder ganz verhindern. Alles, was
Sie dafür tun müssen, ist:
왘 Verwenden Sie irgendwo in der Zeitleiste
die Bildbezeichnung (Fenster • Bedienfelder • Bild) »!#p«, um das Drucken des
Films oder der Filmsequenz über das Kontextmenü zu verhindern. Die Ausgabe mit
Hilfe der Aktionen ist weiterhin möglich.
왘 Platzieren Sie in allen Bildern, die gedruckt
werden sollen, die Bildbezeichnung »#p«.
Alle Bilder ohne diese Bildbezeichnung werden nicht mehr zur Ausgabe angeboten.
Dies gilt sowohl für das Kontextmenü Dru-
Flashprinting SDK
.
279
왘
cken als auch für die entsprechenden Aktionen (z. B. print).
Wenn Sie weder »!#p« noch »#p« verwenden, wird die gesamte Zeitleiste zum Druck
angeboten, falls Sie die entsprechenden Aktionen verwenden oder der Betrachter im
Kontextmenü den Punkt Drucken wählt.
Dies gilt auch für Filme, die vor der Einführung der Druckfunktion erstellt wurden.
Druckgröße beeinflussen
Sie bestimmen nicht nur, welche Bilder ausgegeben werden können, sondern auch in welcher Größe diese Ausgabe erfolgen soll. Dafür
stehen vier Einstellungen bei der Aktion print
zur Verfügung, die in ähnlicher Form auch bei
der Flash 4-Variante mit getURL eingesetzt werden können:
왘 Begrenzungsrahmen • Film (bmovie): In
diesem Fall wird jedes Bild im Verhältnis
zur Bühne gedruckt. Dies entspricht den
Aktionen getURL ("print:"); und getURL
("printAsBitmap:"); in Flash 4.
왘 Begrenzungsrahmen • Bild (bframe): Bei
dieser Einstellung wird der Inhalt jedes Bildes so groß wie möglich ausgegeben. Dies
entspricht den Aktionen getURL ("print:
Num oder nicht Num
Alle Aktionen, bei denen Sie ein Ziel angeben
können, lassen sich auf zwei Arten verwenden
und werden dann auch unterschiedlich geschrieben: einmal mit Num und einmal ohne
Num. Das Num bedeutet, dass Sie als Ziel
keine Filmsequenz, sondern eine Stufe (engl.
Level) angeben. Alternativ können Sie z. B.
zum Drucken anstatt printAsBitmapNum (0,
"bmovie"); auch die Aktion printAsBitmap
("_level0", "bmovie"); angeben. Die Aktion
280
#bframe"); und getURL ("printAsBitmap:
왘
왘
#bframe"); in Flash 4.
Begrenzungsrahmen • Max. (bmax): Bei
dieser Einstellung ermittelt Flash die maximale Größer aller zu druckenden Bilder.
Diese werden dann alle so groß wie möglich ausgegeben, wobei die Proportionen
und das Verhältnis zueinander gewahrt
bleiben. Dies entspricht den Aktionen
getURL ("print:#bmax"); und getURL
("printAsBitmap:#bmax"); in Flash 4.
Durch die Bildbezeichnung »#b« geben Sie
sowohl in Flash 4 als auch in Flash 5 an,
welcher Bereich so groß wie möglich ausgegeben werden soll. Sie können diese Bildbezeichnung nur ein Mal in einer Zeitleiste
verwenden. In diesem Bild erstellen Sie
dann einen Kasten, der als Begrenzungsrechteck (engl. Boundingbox) dient. Dies
entspricht der Angabe von »#bmax«, bei
der Flash dieses Begrenzungsrechteck automatisch ermittelt. Sehr hilfreich ist in beiden
Fällen der Zwiebelschichteneffekt, über
den die Anordnung der Objekte und des
Begrenzungsrechtecks komfortabel durchgeführt werden kann.
printAsBitmap ("0", "bmovie"); hingegen
sucht nach einer Filmsequenz mit der Bezeichnung »0«.
Folgende Aktionen sind von diesem Verhalten betroffen:
왘 print
왘 printAsBitmap
왘 loadMovie
왘 loadVariables
왘 unloadMovie
ActionScript
.
Filmsequenzen zum Drucken laden
Falls Sie eine Filmsequenz drucken möchten,
die extra zu diesem Zweck eingelesen wird (Aktion loadMovie), dann funktioniert das Drucken
nur, wenn die Filmsequenz komplett geladen
ist. Dies überprüfen Sie, indem sichergestellt
wird, dass die Eigenschaft _totalframes größer
als null (sonst existiert diese Filmsequenz nicht)
und _framesloaded gleich _totalframes ist:
Für den Fall, dass die Zeitleiste (Ziel oder
Stufe) nicht existiert, wird der Inhalt der Eigenschaft _totalframes vorsichtshalber mit der
Funktion Number in eine Zahl konvertiert. Dies
führt dazu, dass Flash das mögliche Ergebnis
undefined in null umwandelt.
on (release) {
if (Number(container._totalframes)
== 0 and container._framesloaded
==container. _totalframes) {
printAsBitmap ("container",
"bmovie");
}
}
Flashprinting SDK
.
281
Spiele
Unterhaltung für das Web mit Flash erstellen
Der Markt für Internetspiele boomt. Immer
mehr Firmen versuchen die Attraktivität einer
Website durch interaktive Anwendungen und
Spiele zu verstärken. Die Vorteile liegen auf der
Hand: Die Kundenbindung wird erhöht, es lohnt
sich, eine Site regelmäßig zu besuchen. In diesem
Kapitel werden einige Techniken der Spieleentwicklung mit Flash vorgestellt.
왗
Finanzierung
282
Nicht nur Freelancer und Agenturen erstellen Spiele, um ihre eigenen Fähigkeiten zu
demonstrieren und für sich selber zu werben.
RAND Interactive (http://www.randinteractive.
com/) z. B. hat auf der eigenen Site durch
Spiele wie Meteor (auch bekannt als Asteroids) kurzweiligen Mehrwert geschaffen. Immer häufiger setzen Firmen Spiele auf ihrer
Website ein, um Kunden anzulocken oder zu
binden.
Adressen für gute Spiele verbreiten sich
schnell unter den Angehörigen der Netzgemeinschaft und erhöhen so die Besucherzahl:
Schon manch ein Entwickler wurde von dem
zusätzlichen Traffic und der darauf folgenden
Rechnung seines Providers überrascht.
Um die Kosten eines Webspiels zu begleichen, gibt es verschiedene Modelle. Zum einen finanzieren die Firmen die Entwicklung eines Spiels für ihre Website. Dabei kann es sich
um eine Lizenzierung mit angepassten Grafiken, aber auch um eine Neuentwicklung handeln. Zum anderen entstehen immer mehr
Portale, die wie eine virtuelle Spielhalle agieren. Das zurzeit bekannteste Portal shockwave.
com wird direkt von Macromedia betrieben
(http://www.shockwave.com/). In diesen Fällen wird das Spiel meist pauschal bezahlt, oder
der Entwickler erhält eine von der Anzahl der
Benutzer abhängige Provision.
Um die Kosten gering zu halten, ist auch ein
Sponsoring interessant: Mehrere Firmen finanzieren das Spiel über »Bandenwerbung«. Die
Produkte oder Logos der Firma werden geschickt im Spiel platziert oder sogar in die
Handlung eingebaut.
Bei der Konzeption eines Spiels darf nicht
vergessen werden, dass das Web ein sehr
schnelllebiges Medium ist und sich die Technologien ständig verändern: Eine kostspielige
und langwierige Produktion – wie es sonst bei
Computerspielen üblich ist – lässt sich in den
seltensten Fällen umsetzen. Nicht nur wegen
dem meist knappen Budget und der kurzen
Entwicklungszeit sind die meisten Spiele recht
einfach gestrickt und erinnern eher an das
Pong-Spiel der ersten Spielekonsolen als an
mehrere hundert Megahertz schnelle Computer. Auch die zur Verfügung stehenden Technologien begrenzen die Möglichkeiten.
ActionScript
.
Um Spiele für das Web zu produzieren, können Skriptsprachen wie VBScript oder JavaScript (inklusive dynamischem HTML) verwendet werden. Auch mit der Programmiersprache Java lassen sich ansprechende Spiele
wie z. B. Race3D auf der WebGames-Site
(http://www.webgames.de/) programmieren.
Immer häufiger kommen jedoch Autorensysteme wie Flash und Director zum Einsatz.
Ein Beispiel für gelungene Flash-Spiele ist
»Cheops« für den österreichischen Rundfunk
(ORF) von der Agentur source (http://www.
orf.at/cheops/game.htm). Dieses Spiel zeichnet sich durch zahlreiche kleine knifflige Rätsel
aus. Echtes Spielhallen-Feeling kommt bei
Spielen wie Gigablast (http://www.gigablast.
com/) von dem Krefelder Patrick Thiel (siehe
auch Screen 02/00) und Actionfighter (http://
www.actionfighter.com/) von »Spooky and the
Bandit« auf. Ruhigere Gemüter kommen bei
dem liebevollen Adventure »Leo´s großer Tag«
(http://www2.pepworks.com/pepworks/
pep.html) auf ihre Kosten.
Die amerikanischen Firmen smashingideas
(http://www.smashingideas.com/) aus Seattle
und ezone (http://www.ezone.com/) aus San
Franzisco zeigen neben zahlreichen Spielen,
dass man mit Flash und Director auch Zeichentrickfilme zur Unterhaltung in das Netz stellen
kann. Zur ihrem Repertoire gehören die Peanuts, SouthPark und der Pechvogel Lenny
Loosejocks. Diese Filme finden sich zum Teil
auch auf Macromedias Spieleportal www.
shockwave.com wieder.
Zwar kein Spiel, aber doch ein technisches
Highlight ist die Site »Mono Craft« des Japaners Yugop unter http://www.yugop.com/
shocked/index.html. Hier sind zahlreiche interessante Effekte mit Flash realisiert worden, die
das Betrachten auf »spielerische Art und Weise« zu einem Erlebnis machen.
Spieleentwicklung mit Flash
Das auf Vektoren basierende Autorensystem
Flash bietet neben der weiten Verbreitung
zahlreiche Vorteile bei der Entwicklung von
Webspielen:
왘 Das nötige Plug-in ist auf zahlreichen Plattformen verfügbar.
왘 Falls erforderlich, benötigt das Plug-in nur
ca. 300 kByte beim Download.
왘 Flash-Filme werden auf allen Rechnern
identisch dargestellt.
왘 Die Dateigröße der fertigen Anwendungen
kann sehr klein gehalten werden.
왘 Die Anwendungen lassen sich auch auf CDROM/Diskette als Stand-alone-Projektoren
und als Bildschirmschoner vertreiben.
Zeichentrickfilme, einfache Spiele und Adventure konnten schon mit früheren Versionen
von Flash erstellt werden. Aufwändigere Spiele
sind aber erst mit der Einführung der Programmiersprache ActionScript in Version 4 in vertretbarem Rahmen realisierbar geworden.
Die wesentlichen Elemente
Elemente, die innerhalb
komplexerer Spiele immer wieder benötigt
werden, sind:
Beispiele finden Sie auf der
CD-ROM zum
Buch.
Wenn Sie mit Flash auf Grenzen stoßen …
… dann ist die Kombination von Flash und
Director gerade für die Spieleentwicklung im
Web sehr interessant. Durch Flash bleibt die
Dateigröße auch bei umfangreichen Grafiken
klein, und Director bietet deutlich mehr Möglichkeiten und mit Lingo eine komfortable Programmiersprache (siehe 356).
Spiele
.
왘
283
왘
왘
왘
왘
eine Steuerung (z. B. eines Raumschiffes)
eine Kollisionskontrolle zwischen den einzelnen Objekten (die dann auch Sprites genannt werden)
die dynamische und zufällige Erzeugung
von Hindernissen oder Gegnern
eine Punktezählung mit Highscore
Steuerung von Objekten
Objekte lassen sich in Flash sowohl über die
Maus als auch mit der Tastatur bewegen. Interessant ist, dass sich die Bewegung auf zwei
verschiedene Arten realisieren lässt: durch Animation und durch Programmierung. Die Animation hat den Vorteil, dass sich eine normale
Tween-Animation mit einem beliebigen Pfad
verwenden lässt. Manchmal ist es aber einfacher, nur die x- und y-Koordinaten eines Objektes mit ActionScript zu beeinflussen.
Maus
Wenn der Benutzer das Eingabewerkzeug
beim Surfen nicht wechseln soll oder keine
Tastatur zur Verfügung steht (Set-Top-Boxen),
dann ist eine Maussteuerung der Tastatureingabe vorzuziehen. Solange das Objekt direkt
unter der Maus liegen soll, ist die Lösung sehr
einfach. Platzieren Sie das Objekt in eine Filmsequenz, die Sie über die Aktion startDrag an
den Mauszeiger binden. Die notwendige Aktion können Sie direkt in einem Schlüsselbild
platzieren. Eine weitere Alternative ist, die Aktion als Objektaktion bei einer Filmsequenz zu
verwenden (dies hat den Vorteil, dass alle auf
die Filmsequenz bezogenen Aktionen auch direkt bei ihr platziert sind und keine Pfade angegeben werden müssen). Das genaue Skript
könnte dann so aussehen:
284
onClipEvent (load) {
this.startDrag(true,100,20,100,280);
}
In diesem Beispiel wird das Objekt sogar
nur auf einer vertikalen Linie relativ zum Mauszeiger verschoben, da die Ziehoperation (engl.
to drag) eingeschränkt (engl. constraint) ist.
Achten Sie darauf, die Option Maus zentrieren (engl. lockcenter) zu verwenden, andernfalls wird das Objekt um einige Pixeln versetzt
zum Mauszeiger bewegt. Da die Aktion direkt
im Objekt innerhalb der Objektaktionen ausgeführt wird, muss noch ein passendes Ereignis
angegeben werden: Das Ereignis load (Laden)
tritt immer dann ein, wenn eine Filmsequenz im
Film erscheint – mit unload gibt es auch ein Ereignis für das Verschwinden einer Filmsequenz.
Ein kleines bisschen schwieriger wird es,
wenn das Objekt dem Mauszeiger nur folgen
soll. In diesem Fall muss der Abstand zum
Mauszeiger berechnet und das Objekt, abhängig von einem Faktor, dem Mauszeiger angenähert werden. Diese Aktionen sollten in Flash
5 als Filmsequenzaktion (Objektaktion für eine
Filmsequenz) angegeben werden. Da Sie auf
Seite 252, Mausverfolger, bereits ein Beispiel
finden, ist an dieser Stelle die kürzeste mögliche Schreibweise als Alternative angegeben:
onClipEvent (enterFrame) {
_x+=_xmouse/8;
_y+=_ymouse/8;
}
Tastatur
Um ein Objekt mit der Tastatur zu steuern, benötigen Sie zum einen das zu steuernde Objekt
und natürlich die Steuerung. Das Objekt (in diesem Beispiel ein Auto) muss als Filmsequenz
ActionScript
.
verwendet werden. Die Filmsequenz wird dann
eig
per ActionScript bewegt. Um auf Tastaturer
Tastaturereig
eig-nisse zu reagieren, gibt es zwei Wege: Entweder
Sie erstellen eine Schaltfläche, oder Sie platzieren die Aktionen direkt auf der Filmsequenz.
Die erste Variante funktioniert auch noch in
Flash 4, die zweite ist erst seit Flash 5 möglich.
Für die Flash 4-Variante ist es erforderlich,
dass die Filmsequenz im Bedienfeld Instanz
einen Namen erhält. Nur so lässt sie sich identifizieren und beeinflussen. Damit Flash auf die
Tastatureingabe reagieren kann, legen Sie eine
Schaltfläche mit dem folgenden Skript an:
on (keyPress "<Up>") {
// normale Schreibweise
auto._y=auto._y-5;
}
on (keyPress "<Down>") {
diesen Fällen bietet es sich an, eine völlig leere, unsichtbare Schaltfläche zu erstellen.
Alle leeren Symbole werden auf der Bühne
in der Entwicklungsumgebung von Flash mit
einem kleinen Kreis visualisiert, der im fertigen
Film nicht sichtbar ist. Über diesen Kreis können die Instanzeigenschaften inklusive der Aktionen bei Schaltflächen festgelegt werden.
Während der Entwicklung ist es aber geschickter, in eine unsichtbare Schaltfläche eine einfache Grafik zu platzieren, da die Schaltfläche
dann sichtbar und somit leichter bearbeitbar
ist. Bevor der Film dann endgültig fertiggestellt
wird, sollten Sie den Inhalt der Schaltfläche natürlich wieder löschen.
Die Flash 5-Variante ist etwas eleganter, da
keine separate Schaltfläche notwendig ist. Das
Skript braucht nur direkt als Objektaktion auf
die Filmsequenz gepackt zu werden:
// kurze Schreibweise
auto._y+=5;
}
onClipEvent (keyDown) {
if (Key.isDown(Key.RIGHT)) {
on (keyPress "<Right>") {
// normale Schreibweise
this._x=this._x+5;
} else if (Key.isDown(Key.LEFT)) {
auto._x=auto._x+5;
}
this._x=this._x-5;
} else if (Key.isDown(Key.UP)) {
on (keyPress "<Left>") {
// kurze Schreibweise
this._y=this._y-5;
} else if (Key.isDown(Key.DOWN)) {
auto._x-=5;
}
this._y=this._y+5;
}
}
Um Tastaturereignisse wie das Drücken der
Leertaste in Flash 4 verarbeiten zu können,
werden Schaltflächen benötigt (in Flash 5 können Sie alternativ auch Objektaktionen und
das Key-Objekt verwenden). Häufig möchte
man aber nicht, dass diese Schaltflächen in irgendeiner Form sichtbar sind oder auf die
Maus reagieren: Schon das Erscheinen eines
Handmauszeigers kann unerwünscht sein. In
In Flash 5 kann auf diese Art sogar überprüft
werden, ob eine Taste noch gedrückt oder bereits losgelassen wurde:
onClipEvent (keyDown) {
taste=Key.getCode();
}
onClipEvent (keyUp) {
Spiele
.
285
taste=null;
}
onClipEvent (enterFrame) {
if (taste==Key.RIGHT) {
this._x=this._x+5;
} else if (taste==Key.LEFT) {
this._x=this._x-5;
} else if (taste==Key.UP) {
this._y=this._y-5;
} else if (taste==Key.DOWN) {
this._y=this._y+5;
}
}
Umgekehrt kann die automatische Tastenwiederholung auch ignoriert werden. So wird
sichergestellt, dass der Benutzer bei jedem
Schritt einzeln drücken muss:
Mit den bis hierhin gezeigten Methoden
bewegen Sie ein Objekt immer in festen
Schritten über den Bildschirm. Dies kann natürlich noch mit ein wenig Mathematik und
den entsprechenden trigonometrischen Funktionen verbessert werden, um eine natürlichere Bewegung zu erhalten.
Es gibt aber einen einfacheren Weg, der
sich auch mit einem Minimum an ActionScript
umsetzen lässt: Verwenden Sie einfach eine
Tween-Animation und steuern Sie diese. Die
Schrittweite einer Bewegung lässt sich so komfortabel durch das bloße Einfügen einiger Bilder anpassen. Der genaue Weg der Bewegung
wird durch eine Bewegungsführung festgelegt.
Die Steuerung des Objektes wird erreicht,
wenn der Abspielkopf in dem Tweening ein
Bild vor oder zurück gesetzt wird. Das entsprechende Skript könnte dann so aussehen:
onClipEvent (keyDown) {
if (not gedrueckt) {
if (Key.isDown(Key.RIGHT)) {
onClipEvent (keyDown) {
if (Key.isDown(Key.RIGHT)) {
this._x=this._x+5;
} else if (Key.isDown(Key.LEFT))
nextFrame ();
} else if (Key.isDown(Key.LEFT)) {
{
prevFrame ();
this._x=this._x-5;
} else if (Key.isDown(Key.UP)) {
this._y=this._y-5;
} else if (Key.isDown(Key.DOWN))
{
}
}
onClipEvent (load) {
// stoppe bewegung am anfang
stop ();
this._y=this._y+5;
}
}
gedrueckt=true;
}
Kollisionskontrolle
}
onClipEvent (keyUp) {
gedrueckt=false;
}
286
Auch bei der Kollisionskontrolle gibt es verschiedene Wege, die zum Ziel führen:
왘 Schaltflächen können zur Erkennung einer
Kollision verwendet werden, wenn ein Ob-
ActionScript
.
왘
왘
jekt mit der Maus gesteuert wird, was auch
in Flash 4 funktioniert.
Die Position von Objekten kann verglichen
werden, was auch in Flash 4 funktioniert.
Diese Variante ist aber sehr aufwändig.
Die in Flash 5 neue Methode hitTest überprüft, ob zwei Objekte sich treffen oder ob
ein Punkt in einem Objekt liegt.
Schaltflächen
Solange ein Objekt mit der Maus gesteuert
wird, können Sie die Kollision recht einfach
über Schaltflächen erreichen. Verwenden Sie
für die Hindernisse, die mit dem mausgesteuerten Objekt kollidieren können, einfache
Schaltflächen. Sie können auch unsichtbare
Schaltflächen verwenden. Entscheidend dabei
ist der aktive Bereich
Bereich, der bestimmt, wo die
Kollision stattfinden kann.
Ein Feature (»It´s not a bug, it´s a feature!«)
von Flash ist, dass Schaltflächen nicht immer
auf die Mausposition reagieren. Bei Objekten,
die mit startDrag an den Mauszeiger gebunden werden, ist der Mittelpunkt des Objektes
ausschlaggebend und nicht die Mausposition.
Wenn die Bewegung des Objektes eingeschränkt wird (startDrag(true,100,20,100,
280)), dann reagiert die Schaltfläche nur auf
den Mittelpunkt des Objektes und nicht auf
die Position der Maus. Vergessen Sie nicht, als
Ereignis für die Schaltfläche Darüberrollen
(engl. Rollover) zu verwenden.
kann. Die zweite Variante sollte verwendet
werden, wenn mehrere Objekte miteinander
kollidieren können.
Ob Sie bei der Kollisionskontrolle die x- und
y-Koordinaten vergleichen, die so genannten
Boundingboxen (umschließendes Rechteck) ermitteln oder einfach nur den Abstand berechnen, hängt dabei vom Einzelfall ab. In allen Fällen benötigen Sie die Eigenschaften für die
Position (_x und _y ), in manchen Fällen auch
die Größe der Objekte (_width und _height). In
diesem Zusammenhang sind Trace-Aktionen
wie Trace (objekt._x); sehr nützlich. Mit diesen Aktionen kann man beim Testen die ermittelten Werte ausgeben und überprüfen.
Hittest
Die Aktion hitTest kann auf zwei Arten verwendet werden: Entweder Sie überprüfen, ob
ein Punkt in einem Objekt liegt oder ob sich
zwei Objekte überschneiden. Bei der zweiten
Variante berücksichtigt Flash immer die Boundingbox (das kleinste umschließende Rechteck). Die erste Variante kann entweder anhand
der Boundingbox oder der Form die Kollision
überprüfen.
Das folgende Skript überprüft, ob der
Mauszeiger (oder bei startDrag der Mittelpunkt des an den Mauszeiger gebundenen Objektes) innerhalb der Filmsequenz liegt:
onClipEvent (enterFrame) {
if (this.hitTest( _root._xmouse,
Position vergleichen
Wenn die Position der Objekte miteinander
verglichen wird, kann jedes Objekt diesen Vergleich selbst durchführen
durchführen, oder aber es wird
eine Liste mit allen Objekten verwaltet. Die
erste Variante bietet sich an, wenn ein einzelnes Objekt nur mit einem anderen kollidieren
_root._ymouse, true )) {
// Kollision
_parent.gotoAndPlay(1);
_root.punkte =
parseInt(_root.punkte)+10;
}
}
Spiele
.
287
Natürlich können Sie für die Kollisionsüberprüfung auch die Koordinaten anderer Objekte
an Stelle der Mausposition angeben. Und
wenn Sie nicht die Form, sondern die Boundingbox des Objektes berücksichtigen möchten, geben Sie this.hitTest( x, y, false ) für
die Bedingung an.
Um die Kollision zweier Objekte zu überprüfen, bietet sich meistens aber eher die Variante this.hitTest( filmsequenz ) an, wobei
filmsequenz das zweite an der eventuellen Kollision beteiligte Objekt ist. Bei dieser Variante
berücksichtigt Flash aber leider nur die Boundingboxen beider Objekte. Das folgende Skript
überprüft die Kollision und schaltet davon abhängig die Sichtbarkeit aus:
onClipEvent (enterFrame) {
if ( this.hitTest(_root.objekt)) {
Objekte dynamisch erzeugen
Ein Spiel wird in den meisten Fällen erst dann
richtig interessant, wenn der Zufall eine Rolle
spielt. Gerade die Hindernisse sollten zufällig
erscheinen oder zumindest abhängig vom
Spielablauf generiert werden.
Um Objekte zufällig auf dem Bildschirm zu
platzieren, benötigen Sie die Methode Math.
random () des Math-Objektes. In Flash 4 gab es
die Funktion random, die zwar noch unterstützt
wird, aber nicht mehr verwendet werden sollte.
Math.random () ermittelt einen zufälligen Wert
(eine so genannte Pseudozufallszahl) zwischen
0 und 1. Falls Sie einen Wert in einem anderen
Zahlenbereich benötigen, berechnen Sie diesen. Um ein Objekt innerhalb der Bühne zu
platzieren, verwenden Sie z. B. folgendes
Skript:
this._visible=false;
}
}
onClipEvent (load) {
this._x=Math.ceil (
Math.random ()*550);
this._y=Math.ceil (
Math.random ()*400);
Wer überprüft die Kollision?
In den meisten Fällen haben Sie ein Objekt
(z. B. ein Raumschiff), das vom Benutzer gesteuert wird und mit zahlreichen anderen Objekten (z. B. Asteroiden) zusammenstoßen
kann. Dann ist es am geschicktesten, dass die
Asteroiden jeweils überprüfen, ob sie mit dem
Raumschiff kollidieren. Wenn das Raumschiff
überprüfen soll, ob es mit den Asteroiden kollidiert, ist der Programmieraufwand deutlich
höher: Das Raumschiff weiß ja nicht, welche
Objekte es noch gibt bzw. müsste diese in einer Liste verwalten. Die Objekte wiederum
wissen, dass es genau ein Raumschiff gibt, mit
dem sie kollidieren können.
288
}
Es reicht in den meisten Fällen aber nicht
aus, Objekte zufällig zu platzieren, auch die
Anzahl der Objekte soll zufällig oder zumindest
dynamisch sein. Auch dafür gibt es wieder
zwei Möglichkeiten: Entweder es existiert bereits eine Filmsequenz, die nur noch dupliziert
werden muss, oder Sie nutzen die in Flash 5
neue Möglichkeit, Filmsequenzen zur Laufzeit
zu erzeugen.
Die erste Variante erfordert nur, dass bereits
eine Filmsequenz mit Instanzennamen existiert
(diese Filmsequenz kann auch unsichtbar sein).
Anhand dieser Filmsequenz werden dann mit
ActionScript
.
der Aktion duplicateMovieClip weitere Objekte generiert. Das komplette Skript könnte
dann so aussehen:
for (i=1; i<=10; i++) {
vorlage.duplicateMovieClip(
"Instanz"+i, i );
}
Falls Sie keine Vorlagen für die zu erzeugenden Objekte im Film platzieren möchten, dann
benötigen Sie die neue Aktion attach (hierbei
handelt es sich um eine Methode des MovieClip-Objektes). Damit sich ein Objekt im Film
dynamisch einfügen lässt, muss es sich um eine
Filmsequenz handeln. Diese Filmsequenz muss
in der Bibliothek über die Verknüpfung exportiert werden. Der hier verwendete Bezeichner
wird dann auch bei der Aktion attach benötigt:
Punktezählung
Die Punktezählung ist eine leicht zu realisierende Sache. Das einzige Problem ist, dass
Flash keinerlei globale Variablen kennt. Mit einem einfachen Trick kann aber auch das realisiert werden: Erstellen Sie eine Variable, die im
ganzen Film gültig ist. Diese Variable legen Sie
am besten im Hauptfilm an. So kann die Variable jederzeit über _root.variablenname (_root
bedeutet, dass die Variable im Hauptfilm liegt)
angesprochen werden. Neue Punkte würden
Sie dann über _root.punkte=_root.punkte+10;
vergeben. Falls Sie die Punkte in einem Feld
ausgeben, dürfen Sie nicht vergessen, den Inhalt bei jeder Operation explizit in eine Zahl
umzuwandeln. Dafür stehen die Funktionen
parseInt() und Number() zur Verfügung. Das
fertige Skript könnte so aussehen:
on (rollOver) {
for (i=1; i<=10; i++) {
// Kollision
_root.attachMovie( "vorlage",
_root.punkte=parseInt(
"Instanz"+i, i );
_root.punkte)+10;
}
gotoAndPlay (1);
}
Falls Sie beim Duplizieren Objektaktionen
direkt auf der Filmsequenz platziert haben,
werden diese auch vervielfältigt. Da Sie beim
dynamischen Einfügen auf das Symbol in der
Bibliothek zugreifen, müssen hier alle Aktionen
innerhalb des Symbols liegen!
Was jetzt nur noch fehlt, ist ein Highscore
Highscore.
Dieses wird meist zentral auf einem Server verwaltet, so dass der Punktestand im einfachsten
Fall nur per loadVariablesNum ("http://www.
meinserver.de/cgi-bin/highscore.pl", 0,
"POST"); übertragen werden muss.
Ein CGI-Skript zum Speichern von Higscorelisten namens ScoreKeeper finden Sie unter
http://www.k2w.f2s.com/software. Dieses
Skript ist in Perl geschrieben und sollte mit den
meisten Webservern, sofern sie dort CGIs verwenden dürfen, harmonieren.
Spiele
.
289
Fehlersuche
… oder Käfer entfernen (engl. debugging)!
Gute Programme – und damit natürlich auch
ihre Entwickler – zeichnen sich nicht nur durch
herausragende Ideen und effizientes Arbeiten,
sondern auch durch die Qualität des Codes aus.
Damit Ihre Skripts gut wartbar sind, sollten
Sie diese dokumentieren
dokumentieren. Immer genau dann,
wenn man nicht damit rechnet, werden nämlich noch Änderungen – manchmal Monate
später – erforderlich. Wenn Ihre Skripts dann
gut dokumentiert sind, werden Sie die Änderungen schnell durchführen können. Die gleichen Regeln gelten für die Arbeit im Team,
schließlich müssen hier Ihre Kollegen oder
Kunden den Programmcode verstehen können.
Eine der wichtigsten Regeln ist, dass Sie
zahlreiche Kommentare verwenden (übrigens
schreibt man Kommentare möglichst im Imperativ, da diese so prägnanter und verständlicher sind). Kommentare (engl. Comments) stehen als Aktion im ActionScript-Editor zur
Verfügung. Falls Sie im Expertenmodus arbeiten, können Sie auch mehrzeilige Kommentare
verwenden, die mit /* beginnen und mit */
enden sollten. Flash wandelt mehrzeilige Kommentare im normalen Modus in normale Kommentare um.
Schlüsselwörter, die nicht für Bezeichner verwendet werden sollten
290
Abstract
Boolean
Break
Byte
Case
Catch
Char
Class
Const
Continue
debugger
default
delete
do
double
Else
enum
export
extends
final
finally
float
For
function
goto
if
implements
import
in
instanceof
int
interface
long
native
New
package
private
protected
public
Return
short
static
super
switch
synchronized
this
throw
throws
transient
try
typeof
Var
Void
volatile
while
with
ActionScript
.
Auch Bezeichner (z. B. Variablen, Objekte und
Funktionen) sollten möglichst selbsterklärend
sein. Wenn Sie eine Variable für die Punkte
verwenden, dann nennen Sie diese auch so.
Kryptische Synonyme wie z. B. ip01 machen es
für einen Menschen schwer, den Programmcode zu lesen. Für Bezeichner sollten Sie sich
im Übrigen an die gewöhnlichen Konventionen halten: Es hat sich eingebürgert, dass
Bezeichner komplett kleingeschrieben werden;
zur besseren Lesbarkeit beginnt man neue Begriffe in einem Bezeichner aber mit einem
Großbuchstaben: ermittleDatum. Handelt es
sich um den Bezeichner einer Funktion oder
Methode, sollte auch hier wieder ein Imperativ
verwendet werden.
Schon in der Programmiersprache ActionScript vorhandene Begriffe sind für eigene
Bezeichner tabu. Daneben gibt es aber noch
weitere Schlüsselwörter, die nicht verwendet
werden sollten:
Auch wenn Sie Ihre Skripts gut dokumentieren, wird es sicherlich noch zu dem einen oder
anderen Fehler kommen. Flash bietet Ihnen
Werkzeuge, um diese Fehler möglichst schnell
zu finden und auszumerzen:
왘 Ausgabefenster (Aktion trace)
왘 Debuggen (Fehlersuche)
왘 Watcher (Beobachten von Werten)
Ausgabefenster
Das Ausgabefenster funktioniert nur in der
Flash-Entwicklungsumgebung. Sie öffnen es
sowohl im Bearbeitungsmodus als auch im
Textmodus (Steuerung • Film testen) über
Fenster • Ausgabe. Das Ausgabefenster erscheint aber auch automatisch, sobald eine
Ausgabe erfolgt.
Flash gibt im Ausgabefenster z. B. Warnmeldungen und Fehler an. Auch die Konvertierungen beim Import eines Flash-Films werden hier
festgehalten. Um den Programmablauf zu kontrollieren, können Sie mit der Aktion trace
Zwischenergebnisse und Text ausgeben lassen,
falls der Film in der Entwicklungsumgebung
getestet wird. Wenn Sie z. B. nicht sicher sind,
ob ein Codeblock überhaupt ausgeführt wird,
dann platzieren Sie einfach eine trace-Aktion
in diesen Block, und überprüfen Sie, ob ein
Text im Ausgabefenster erscheint. Ebenfalls im
Testmodus stehen Ihnen die Menüs Fehlersuche • Objekte auflisten und Fehlersuche •
Variablen auflisten zur Verfügung. Objekte
auflisten zeigt alle auf der Bühne befindlichen
Objekte inklusive der Filmsequenzen des Films
im Ausgabefenster an. Variablen auflisten
macht dasselbe nur bezüglich der Variablen
(die wiederum auch Objekte enthalten können).
Debugger und Watcher
Der Debugger hilft Ihnen, Fehler in einem laufenden Flash-Film zu lokalisieren. In der Anzeigeliste des Debuggers werden alle gerade
ablaufenden Filme und Filmsequenzen einer
abspielenden SWF-Datei angezeigt und die
entsprechenden Eigenschaften und Variablen
ausgegeben. Einzelne Variablenwerte und Eigenschaften lassen sich hier während des Abspielens auch ändern oder hinzufügen.
Der Debugger lässt sich auf mehrere Arten
einsetzen:
왘 Direkt in der Entwicklungsumgebung überprüfen Sie einen Flash-Film über Steuerung • Fehlersuche.
Fehlersuche
.
291
Abbildung 1 왘
Debugger mit Watcher (Überwacher)
왘
292
Um einen Film direkt im Webbrowser zu testen, benötigen Sie einen speziellen Flash
Player
Player, der normalerweise auf Ihrem Computer installiert ist. Diesen Flash Player finden
Sie auch im Flash 5-Programmordner (meistens c:\programme\macromedia\flash 5\)
unter Players\Debug. Damit ein Flash-Film
jetzt auch aus dem Browser heraus getestet
werden kann, müssen Sie in Flash unter
Datei • Einstellungen für das Veröffentlichen innerhalb des Registers Flash die
Fehlersuche zulassen und bei Bedarf ein entsprechendes Passwort vergeben. Dann zeigt
Flash beim Abspielen des Films im Webbrowser im Kontextmenü den Punkt Debuggen an, über den sich der Debugger in Flash
starten lässt. Beachten Sie bitte, dass Flash
dafür geöffnet sein muss.
왘 Macromedia bietet auch einen speziellen
Stand-alone-Player an, mit dem sich ein
Flash-Film mit Debugger abspielen lässt.
Hierfür gelten aber die gleichen Bedingungen wie für den Webbrowser.
Im Register Eigenschaften des Debuggers
ermitteln und ändern Sie Eigenschaften. Variablen ändern Sie im Register Variablen. Diese
können Sie über das Kontextmenü (rechte
Maustaste oder (Ctrl) + Maustaste) oder die
Bedienfeldoptionen auch zur Überwachung
(engl. Watch) hinzufügen.
Der Watcher ermöglicht es Ihnen, einzelne
Variablenwerte zu verfolgen, zu ändern und
ActionScript
.
auch neue Variablen anzulegen (Überwachung hinzufügen). Über den Befehl Überwachung entfernen löschen Sie einzelne Variablen wieder aus dem Watcher. Im Watcher
lassen sich neben Variablen auch Eigenschaften angeben.
Fehlersuche
.
293
Fortsetzung folgt.
Nächste Woche finden Sie den
nächsten Teil dieses Buches –
da, wo Sie diesen Teil heruntergeladen haben.
Ihr Galileo Team
und Sascha Wolter
Index
#include 220
__proto__ 269
3D 296
Adobe Dimensions 301
Logo 306
mit Microsoft Office erstellen 297
Techniken 296
Würfel 309
A
Absatz 44, 80
Eigenschaften 81
Abspielgeschwindigkeit ändern 243
Abspielkopf 36, 106
Abspielsteuerung 40
Action Script Viewer 374
ActionScript
Bestandteile 215
CGI-Skripten aufrufen 151
Darstellungsqualität
einstellen 150
E-Mail versenden 152, 272
Editor 140, 217
Eigenschaften 236
Eigenschaften bestimmen 248
Expertenmodus 141, 219
Film entladen 154
Film laden 153
Filmsequenzen steuern 155
Formatierung 220
Grundlagen 214
Hilfsmittel 217
HTML-Dokumente anzeigen 151
Importieren und Exportieren 220
Ladestatus ermitteln 158
Normaler Modus 141
Sound anhalten 150
Umgebung steuern 150
Ursprung 214
Variable 240
ActionScript-Editor
Escape-Sequenz 219
Normaler Modus 218
ActiveX 324
Eigenschaften 324
Methoden 328
Adobe Dimensions 301
Adobe Illustrator 175, 374, 375
Adobe, Rechtsstreit 43
412
ADPCM-Format 163
Aftershock 201, 228
Aktion 147, 214
Eingabe von Skripten 217
evaluate 219
FSCommand 150
Get URL 151
Go To 148
If Frame Is Loaded 158
Load Movie 153
Play 148
Reihenfolge 217
Set Property 248
Stop 147
Stop All Sounds 150
Tell Target 155
Toggle High Quality 150
Unload Movie 154
Aktualisieren
von Medien 122
Allgemeine Bibliothek 123
Andocken der Zeitleiste
verhindern 38
Animation 130
Bild-für-Bild 130
Ankerpunkt 98
Ansicht
Arbeitsbereich 90
Ausrichten 94
Bühne 89
Gitter 92
Lineal 92
Vergrößerungsfaktor 89
Verschieben 91
Zoom 89
Arbeitsbereich 34, 90
ASP 274
Auffinden von Objekten 101
Ausdruck 236, 251
Ausgabefenster 48, 190, 291
Ausrichten 43, 95
Auswahl aufheben 94
Auswählen 93
Füllung 93
Linie 93
Liniensegment 93
AutoCAD 175
Automatisch hoch 195
Automatisch niedrig 195
B
Bandbreite 25
Rechenleistung 25
Simulieren 190
Bandbreiten-Profiler 187, 190
Basisaktion 219
Beatnik 266
Bedienfeld 40
Absatz 44, 80
Aktionen 217
Ausrichten 43
Bild 45
Effekt 45
Farbmischer 42
Farbtöne 42
Füllung 42
Generator 47
Info 41
Instanz 45
Linie 42
Sequenzparameter 46
Sound 46, 161
Szene 46, 115
Textoptionen 44, 82
Transformieren 43
Zeichen 44, 79
Bedienfeld -> s. Inspektor 40
Bedienfeld -> s. Palette 40
Begradigen 96
Bewegung 130
Bewegungs-Tweening 131
Bewegungsführung 133
Bewegungsführung 114, 133
Bezeichnung 110
Bézierkurven 70
Bibliothek 37, 120
allgemeine 123
anlegen 59
gemeinsam nutzen 124
Optionen 122
Bild 45, 108
Ausschneiden 111
Einfügen 108
Füllbild 108
Kopieren 111
Löschen 109
Schlüsselbild 108
Verschieben 110
Bild eingeben 252
Index
.
.
Bild-für-Bild-Animation 130
Dateisequenz 174
Zwiebelschichteneffekt 130
Bildaktion 141, 216
Bildeigenschaften 110
Bildinspektor 45
Bildschirmfüllend 340
Bildschirmschoner 368
Bitmap 24
als Füllung 69, 180
Nachzeichnen 180
Verwenden 180
Zauberstab 99
Blende 114
Boblgum Patch 217
Browser festlegen 193
Bühne 34
Dimension 35
Farbe 35
C
call 264
Case 264
Cel-Animator 28
CGI 151, 272
Probleme 275
Checkbox 256
clr 67
ColdFusion 274
Common Gateway Interface 151, 272
CorelDraw 374
currentframe 236
D
Darstellung
Geschwindigkeit 91
Darstellungsqualität 91
Dashboard 401
Datei
Als Bibliothek öffnen 49
Drucken 50
Neu 49
Öffnen 49
Schließen 49
Speichern 49
wiederherstellen 49
Dateigröße
optimieren 123
Dateisequenz 174
Datenbank 275
Debuggen 290
Debugger 48, 291
Dehnen 97
Director 356
Abspielleistung eines Flash-Films
erhöhen 359
Darstellereigenschaften eines
Flash-Films 358
Drucken 363
Eigenschaften eines FlashSprites 360
Flash-Film importieren 358
gesteuert durch Flash-Film 361
Drag and Drop 256
Dreamweaver 201, 228
JavaScript Integration Kit for
Macromedia Flash 5 202
Dreamweaver UltraDev 202
Drehbuch 106
Drehen 43, 96
Mittelpunkt 116
Drucken, Druckbereich 35
Durchsichtig, Flash-Film 195
Dynamischer Text 82
E
E-Mail
Datei senden 50
versenden 152, 271, 272
Easter Egg 408
Ebene 36, 111
Bewegungsführung 114
Eigenschaften 111
Führungsebene 114
gesperrt 112
Höhe 112
Konturen 112
Maske 113
Typ 111
unsichtbar 112
Eckpunkt Erstellen 97
ECMA-262-Standard 215
Editor, ActionScript 217
Effekt 45, 128
Eigenschaft 236, 247
ändern 250
eigenständiger Player 208
Eimer 76
Eingabe, Textfeld 82
Einstellungen 52
Ellipse 72
EMBED 313
Endlosschleife 236
enter Frame 252
Ereignis 216
Ereignissound 164
Erstellen
Film für ältere Flash Player 224
für ältere Flash Player 222
Erweiterte Metadatei 175
Expertenmodus 141
Export 174
F
Farbe 65
erstellen 68
Füllung 65
keine 65, 68
Linie 65
massive 65
mischen 67
Palette 67
Taste 68
Verlauf 65
vertauschen 66
Web-sicher 68
Farbeffekt 128
Farbeimer 76
Farbenfenster 42
Farbenfenster -> s. Farbmischer 42
Farbmischer 42, 67
Farbpalette 65, 66, 67, 68
Farbton 42, 65
Farbtypindikator 74
Farbverlauf 65
Fast 217
Fehlersuche 290
Felder 78, 271
Reihenfolge 271
Fenster, neues 57
Film-Explorer 47, 101
Filmgröße 195
Filmsequenz 242
Eigenschaft 236
steuern 242
Filmsequenzsymbol 118
FlaSE 217
Flash
Abfrage des Plug-ins 226
die Unterschiede der einzelnen
Versionen 30
Ermitteln der Version 226
Film optimieren 187
Film schützen 194
Flash 5 wie Flash 4 nutzen 52
Kompatibilität 222
offener Standard 27
Spielerei 26
Sprachen 29
Version 222
Version 1 28
Version 2 30
Version 3 30
Version 4 31
Version 5 32
Wünsche 30
Flash 4
erstellen 224
konvertieren nach Flash 5 224
Index
.
.
413
Flash Asset Xtra 357
Flash Deployment Kit 203
Flash Dispatcher Behaviour 203
Flash Open File Format 372
Flash Player 26, 184
alte Versionen 231
entfernen 231
Erkennung mit Skript 227
Erkennung ohne Skript 228
Java 346
Verbreitung 27
Flash-Film
abspielen mit Java 346
als Bildschirmschoner 368
als QuickTime 352
als Video 352
Aufbau 242
Director steuern 361
durchsichtig im Webbrowser 195
in Director verwenden 358
in Frames 341
mit dynamischem Inhalt 382
steuern mit JavaScript 338
über ActiveX steuern 324
Überblick 101
Flashdetection 226
FlashJester 373
FlashTyper 373
focusrect 236
Form 62
Füllung 62
Kontur 62
Umriss 62
unregelmäßige 63
Verändern 97
Vereinfachen 96
Weichzeichnen 99
Zusammenfassen 116
Form-Tweening 136
Formmarken 136
Format
Übertragen 77
Formerkennung 96
Formmarken 136
Formular 271
framesloaded 236
FreeHand 175, 374
Freihandwerkzeug 70
FSCommand 150, 338
allowscale 210
exec 210
fullscreen 210
quit 210
showmenu 210
trapallkeys 210
Führungsebene 114
414
Führungslinie 92
Füllbild 108
Füllfarbe 65
Füllung 42, 62, 76
Erweitern 98
gleichmäßige 69
sperren 74
transformieren 76
Funktion 262
selbstdefiniert 264
vordefiniert 264
FutureSplash 28
FutureSplash-Player 176
FutureWave 28
G
GEMA 171
Gemeinsam genutzte Bibliothek 124
Generator 382, 383
Datenquelle 389
Funktionsweise 385
Objekt 388
Vorlagenbefehl 386
Generator Authoring Extensions 383
Generator Developer Edition 384
Generator Enterprise Edition 384
Generator-Inspektor 47
Generator-Variable 386
Generator-Vorlagen 385
generische Schriftart 87
Geräteschriftart 195
Geräteschriftarten 87
Geräusch 160
Geschwindigkeit 91
Get Property 248
Get URL 151, 338
GET-Methode 274
getBytesLoaded 239
getBytesTotal 239
getFocus 271
getURL 273
Gitter 92
Ausrichten 94
Gitternetz 91
Glätten 96
Go To 148
Grafiksymbol 118
Grafiktablett 76
Graphics Interchange Format 176
Größe 195
Bühnengröße 35
Grundelemente 34
Gruppe
bearbeiten 116
Sperren 117
Gruppieren 116
H
Hand 91
Handler 218, 262
Hervorhebung von Aktionen 220
Hierarchisches Menü erstellen 257
highquality 236
Highscore 289
Hilfe 400
Beispiele 401
Entwicklerzentrum 401
Hotline 400
Internet 402
Hilfemenü 400
Hilfslinie 91, 92
Ausrichten 94
Hintergrundfarbe ändern 243
hitTest 287
HTML 83, 312
EMBED 313
Object 313
Tags 312
Vorlage 320
Hyperlinks 83
I
If Frame Is Loaded 158, 235
if und else 236
IfFrameLoaded 158
Illustrationsprogramm 374
Illustrator 374, 375
Imagemap 196
Import 174
Info-Bedienfeld 41
Inspektor 40
Generator 47
Szene 46
Inspiration 16
Instanz 37, 45, 117, 126
Definition 127
Eigenschaften 126
Farbeffekt 128
Verhalten 127
Instanzeigenschaften, Definition 45
Int 264
ISDN 192
J
Java 346
Applet 346
Application 348
Konstanten 349
Konstruktor 349
Methoden 349, 350
JavaScript 338
erstellen mit Dreamweaver 202
Flash Player ermitteln 227
Index
.
Joint Photographic Experts
Group 176
JSP 274
Jtools 373
Jugglor 373
K
Keybord Shortcuts 54
Kiosk-Modus 340
Klang 160
Kollisionskontrolle 286
Kommentar 110, 220, 290
mehrzeilig 220
Kommunikation zwischen FlashFilmen 341
Kompatibilität von Flash 222
Konstruktor 265, 266
Kontextmenü deaktivieren 195
Kontrollkästchen 256
Kontrollstruktur 235
Kontur 62
Konvertieren, Flash 4 nach
Flash 5 224
Kreis, Halbkreis erstellen 63
Kuchendiagramm 389
L
Ladereihenfolge 234
Lasso 99
Polygon 99
Zauberstab 99
Launcher 40
Lautstärke 168
Lektionen, Hilfe 401
level 246
Lineal 92
Einheit 93
Linealeinheit 93
Linie 42, 62
Eigenschaften 77
in Füllung umwandeln 98
Segment 62
Typ 64
Verlauf 98
Zeichnen 72
Linienfarbe 65
Linse 69
Linux-Plug-in 372
Lizenz 203
Load Movie 153
loadMovie 274
loadMovieNum 274, 280
loadVariables 274, 382
loadVariablesNum 274, 280
Logo, dreidimensional drehen 306
Lupe 89
M
O
Macintosh-Projektor 200
MacPaint 176
Macromedia 28
Marktanteil 29
Mitarbeiter 29
Macromedia Director 356
Macromedia FreeHand 374
Macromedia Generator 383
MacroMind 28
Magnet 94
Mail versenden 271
Maske 113
massive Farbe 65
Math.round 239
Maus 284
Außerhalb loslassen 149
Darüber rollen 149
Darüber ziehen 149
Drücken 149
Loslassen 149
Wegrollen 149
Wegziehen 149
Mausverfolger 252
maxscroll 236
Mehrfachauswahl 101
Menü
Ansicht 55
Bearbeiten 51
Bibliotheken 59
Datei 49
Einfügen 55
erstellen 257
Fenster 57
Modifizieren 56
Pop-up 257
PopUp 257
Pull-down 257
Steuerung 56
Methode 217, 250
Mittelpunkt 116
Morphing 136
Movie Explorer 101
MP3-Format 163
Musik 160
Oberflächenelement 256
Object 313
Objekt 265
Auffinden 101
dynamisch Erzeugen 288
mehrere gleichzeitig
auswählen 101
Methode 268
selbst definiert 266
vordefiniertes 265
Objektaktion 216, 251
Objekte auflisten 291
Objektorientierung 266
Vererbung 269
Ohne Rand 322
OLE 182
OLE/OCX-Steuerungen 324
onClipEvent 252
Operator 251
Optimieren 96, 187
Organisation 47
Osterei 408
N
NASDAQ
MACR 29
Neigen 96
new 265
Normaler Modus 141
NPSWF32.dll 232
Num, Stufen als Ziel angeben 280
Number 264
P
Palette 40
Parameter als Ausdruck 251
parent 245
Perl 274
Pfeil 94
Pfeilwerkzeug, Form verändern 97
PGML 26
PhotoShop 176
Photoshop
Alphakanal 182
PHP 274
PICT 176
Pinsel 73
Pipette 65, 77
Pixel 24
Play 148
Plug-in 26, 184
Überprüfen 204
Verbereitung 27
Plug-in -> s. Flash Player 26
PopUp-Menü 257
Position festlegen 41
POST-Methode 274
Preloader 234
printAsBitmapNum 280
printNum 280
Pro und Kontra Flash 25
Projektor 211
prototype 269
Index
.
415
Q
Qualität 195
Darstellung 91
quality 248
QuickTime 352
R
Radiergummi 74
Wasserhahn 75
Rahmenlos 322
Random 264, 288
RAW-Format 163
RealNetworks 352
RealPlayer 355
Rechteck 72
Reihenfolge umkehren 111
root 246
S
Scalable Vector Graphics 26
Schaltfläche 142
Animiert 143
Hervorheben 143
Ton 143
Unsichtbar 143, 260
Zustand 142
Schaltflächensymbol 118
Schleife 236
endlos 236
Schlüsselbild 109
Bezeichnung 110
Eigenschaften 110
Einfügen 109
gefülltes 109
Kommentar 110
leeres 109
Löschen 109
Schlüsselwort 290
Schnellstartleiste 40
Schnellstartleiste -> s. Launcher 40
Schrift
generisch 87
Gerät 87
mit Farbverlauf 65
Schriftzüge ein- und
ausblenden 12
Schriftsymbol 88
Schützen 194
Screensaver 368
scroll 236
Segment 62
Selbstdefinierte Funktion 264
Selbstdefiniertes Objekt 266
Selection-Objekt 271
Sequenzparameter 46, 253
festlegen 254
416
Index
Set Property 248
setFocus 271
Shockmachine 111
Shockwave 184
Shockwave Remote 111
HTML-Tag SWREMOTE 318
Shockwave-Flash-NP-68 232
Shockwave-Flash-NP-PPC 232
Sicherheit 270
Skalieren 43, 97
Mittelpunkt 116
Small Web Format 185
Smart Clip 253
Beispiele 253
Smart Filmsequenz 253
SmartSketch 28
Sniffer 229
Sound 46, 160
ADPCM 163
Anfang 164
Beatnik 266
Bedienfeld 161
Daten 164
Effekt 167
Einstellungen 161
Ende 164
Ereignis 164
Exportieren 169
Formate 160
Hülle Bearbeiten 168
Importformate 160
Komprimierung 162
Lautstärke 168
MP3 163
Qualität 169
RAW 163
Standardeinstellung 169
Start 164
Stop 164
Streaming 167
Synchron 167
Wellenform 167
soundbuftime 236
Sperren 117
Spiegeln 97
Spiel
finanzieren 282
Konzeption 282
Punktezählung 289
Spieleprogrammierung 282
Spotlight 113
Sprungmarken 110
Stand-alone-Player 208
FSCommand 208
Stand-alone-Projektor 211
Standardfarben 66
Standardsymbolleiste 39
Stanze 94
Stapelreihenfolge 36
startDrag 284
Startsound 164
Statussymbolleiste 39
Stauchen 97
Steuerung von Objekten 284
Stift 70
Stop 147
Stop All Sounds 150
Stop-Sound 164
Storyboard 12
Drucken 50
Streaming 234
Testen 191
Streaming-Sound 167
Streaming-Verhalten 240
Strich 62
Stufe
oder LevelLevelLevel ->
s. Stufe 242
Styleguide 124
Suchmaschinen 27
SVG 26
SWF
Dateiformat 372
SWF-Browser 374
SWfx 373
Swift 3D 300
Swift-Generator 395
Swish 373
Symbol 37, 117
Arten 118
aus anderem Film
übernehmen 120
Bearbeiten 119
bearbeiten 51
Filmsequenz 118
Grafik 118
Schaltfläche 118, 142
Sperren 117
Synchronisieren 137
Symbolleiste 38
Abspielsteuerung 40
Standard 39
Status 39
Werkzeuge 38
Zeichnen 38
Symbolleiste -> s. Werkzeuge 38
Szene 37, 114
Popup-Menü 115
Szene-Inspektor 46
T
U
W
Tastatur 284
Tastendruck 149
Tastenkombination 54, 406
Teilen 99
Tell Target 155, 242
Testen 188
alte Flash Player 231
Ausgabefenster 190
Film 189
Szene 189
Text 78
Ausrichtung 80
dynamischer 82
dynamsich laden 273
feste Breite 78
Größe 80
Schriftart 79
Schriftartsymbol 88
scrollen 273
Unterschiede zwischen Texten
und Feldern 83
variable Breite 78
Zerlegen 89
Texteffekte 373
Texteingabe 82
Textoptionen 44, 82
Textur 69, 180
this 246, 268
Tintenfass 77
Toggle High Quality 150
Ton 160
totalframes 236
Tracen 180
Transformieren 43
Transparent, Flash-Film 319
Tweening
Bewegung 131
Bewegungsführung 114, 133
Form 136
Formmarken 136
in Schlüsselbilder konvertieren
110
Überblick
Flash-Film 101
Uhrzeit 264
UltraDev 202
Umriss 62
Unload Movie 154
unloadMovieNum 280
Unsichtbare Schaltfläche 260
Unterschiede zwischen Texten und
Feldern 83
Updates 402
Wasserhahn 75
Watcher 48, 291
Webbrowser festlegen 193
Webserver 205
Weichzeichnen 99
Werkzeug 38, 69
auflösungsabhängig 90
Freihand 70
Werkzeugsymbolleiste 38
Werkzeugtipps 38
Windows-Projektor 200
with 247
Würfel dreidimensional drehen 309
V
var 250
Variable 240, 249
ändern 250
für Textfeld angeben 83
global 250
lokal 250
Variablen auflisten 291
Vecta3D 300
Vektorgrafik 24
Vektor 24
Veränderungen seit Flash 3 38
Verbreitung 27
Verknüpfung 124
Verlauf 69
linear 69
radial 69
transformieren 76
Veröffentlichen 184, 192
Einstellung 192
Flash Player-Film 193
GIF 198
HTML 195
JPEG 198
PNG 199
Projektor 200
Video 352
visible 245
Vollbildmodus 340, 368
Vordefinierte Funktion 264
Vordefiniertes Objekt 265
Vorlage 320
Variable 320, 322
Vorschau 106
X
x 248
xch 255
XML 275
XMLSockets 277
Y
y 252
Z
Zauberstab 99
Zeichen 44, 79
Zeichenfolgenfunktion 264
Zeichnensymbolleiste 38
Zeitleiste 36, 106
Bilddarstellung 106
Ebene 106
Statusanzeige 108
Zerlegen 99
Ziel angeben 246
Zieleditor 246
Zoomkontrolle 89
Zufall 288
Zusammenfassen 37
Zustand 244
Zwiebelschichteneffekt 107, 130
Zwischenablage 182
Voreinstellungen 53
Index
417
Sagen Sie uns Ihre Meinung.
Zu diesem Kapitel oder zum Buch.
Zur Eingabe Ihrer Meinung
Bitte verwenden Sie dazu auf unserer Website die
folgende Registriernummer
01GP10099999
Oder diskutieren Sie mit anderen Flashern
im Flashforum von Galileo
oder auf flashforum.de
Die Schaltflächen enthalten die Weblinks.
Bücher, die Sie auch
interessieren werden
Die Buchcover enthalten Weblinks.
und weitere Titel im Programm zu
_ Dreamweaver MX
– Fireworks MX
_ Director und Lingo
_ Photoshop 7
_ Digital Video
_ Web Usability
_ Website-Konzeption
_ Webdesign
Galileo Design
>> www.galileodesign.de

Documentos relacionados