Inhalt
Buchinhalt
1 Die etwas andere Einführung
- 1.1 Aufwärmphase
- 1.1.1 Trockenübungen: Was ist ein Programm ?
- 1.2 Sprung ins kalte Wasser
- 1.2.1 Ein erstes ActionScript-Programm
- 1.2.2 Kommentare
- 1.2.3 Ausgabefenster
- 1.2.4 Zeilenabschluss
- 1.3 Abtrocknen
2 Ausloten der Entwicklungsumgebung
- 2.1 Expertenmodus
- 2.2 Formatoptionen
- 2.3 Voreinstellungen
- 2.4 Codehinweise
- 2.5 Referenz
3 Variablen
- 3.1 Was sind Variablen?
- 3.2 Deklaration
- 3.2.1 Deklaration einer Variablen
- 3.2.2 Deklaration mehrerer Variablen
- 3.3 Initialisierung
- 3.3.1 Die speziellen Werte undefined und null
- 3.3.2 Initialisierung mit einer Zuweisungskette
- 3.4 Bezeichner
- 3.4.1 Konventionen
- 3.4.2 Groß- und Kleinschreibung
- 3.4.3 Erlaubte Zeichen
- 3.4.4 Reservierte Wörter (keywords)
- 3.5 Gültigkeitsbereich und Lebensdauer von Variablen
- 3.5.1 Lokale Variablen
- 3.5.2 Zeitleistenvariablen
- 3.5.3 Globale Variablen
- 3.5.4 Bereichskette
- 3.5.5 Vergleichstabelle
- 3.6 Textfeld-Variablen
- 3.7 Vordefinierte Variablen
- 3.7.1 $version
- 3.7.2 Definition über die URL
- 3.7.3 Definition über die FlashVars Eigenschaft
- 3.8 Variablenaustausch zur Laufzeit
- 3.9 Beispiel
4 Datentypen und Operatoren
- 4.1 Die Notwendigkeit von Datentypen
- 4.2 Übersicht zu den Datentypen in ActionScript
- 4.3 Die einfachen Datentypen, Literale und Operatoren
- 4.3.1 String (Zeichenketten)
- 4.3.1.1 String-Literale
- 4.3.1.2 Operatoren für den Datentyp string
- 4.3.2 Boolean (Wahrheitswerte)
- 4.3.2.1 Logische Operatoren
- 4.3.3 Number (Zahlen)
- 4.3.3.1 Zahlenliterale
- 4.3.3.2 Gleitkomma-Genauigkeit
- 4.3.3.3 Konstanten und spezielle Werte
- 4.3.3.4 Operatoren für den Datentyp number
- 4.4 Rangfolge der Operatoren
5 Funktionen
- 5.1 Wieso Funktionen grün sind
- 5.2 Eigene Funktionen definieren und aufrufen
- 5.3 Funktionen mit Parametern
- 5.4 Funktionen mit Rückgabewerten
- 5.5 Funktionen mit variabler Anzahl von Parametern
- 5.6 Das Objekt Arguments - callee & caller
- 5.7 Mit rekursiven Funktionen ans Limit
- 5.8 Unheimliches aus der Wunderlampe
- 5.8.1 Einen Verweis auf sich selbst zurückgeben
- 5.8.2 Funktionsdeklaration mit einer bedingten Anweisung
- 5.8.3 Aufruf vor Deklaration
- 5.8.4 Funktionen ohne Bezeichner
- 5.9 Anmerkungen zu vordefinierten Funktionen
- 5.9.1 escape/unescape
- 5.9.2 eval()
6 Bedingte Anweisungen
- 6.1 Wer stellt hier die Bedingungen?
- 6.2 Verzweigungen mit der if-Anweisung
- 6.3 Auswahl mit der switch-Anweisung
- 6.4 Der ?: Operator
7 Schleifen
- 7.1 Jetzt wird Achterbahn gefahren
- 7.2 Die while-Schleife
- 7.3 Die do-while-Schleife
- 7.4 Die for-Schleife
- 7.5 Die for-in-Schleife
8 Objekte und Klassen
- 8.1 Sind Objekte der heilige Gral von Flash?
- 8.2 Haben Objekte auch wirklich Klasse?
- 8.2.1 Konstruktor
- 8.2.2 Überblick über vordefinierte Klassen in ActionScript
- 8.2.3 Instanzen mit dem Schlüsselwort new erzeugen
- 8.2.4 Konstruktor-Funktion mit Argumenten
- 8.2.5 Eigenschaften und Methoden
- 8.2.6 Zugriff auf Eigenschaften und Methoden
- 8.2.6.1 Der gepunktete Weg - die DOT-Syntax
- 8.2.6.2 Mit allen gleichzeitig - die Aktion with
- 8.2.6.3 Zugriff auf alles - der Zugriffsoperator [ ]
- 8.2.7 Strenge Verweise, oder der Letzte knipst das Objekt aus
- 8.2.8 Überblick über vordefinierte Objekte in ActionScript
- 8.3 Die eigene Klasse
- 8.3.1 Das Schlüsselwort this
- 8.3.2 Die Vorlage bekommt Methoden
- 8.3.3 Die Eigenschaft prototype
- 8.3.4 Funktionen sind auch Objekte
- 8.3.5 Die Eigenschaft __proto__
- 8.3.6 Feuerwehr - Löschen von Objekten mit einer Objektmethode
- 8.3.7 Die ideale Klasse - eine Zusammenfassung für die Praxis
- 8.4 Eine Klasse erweitern - Hopp oder OOP?
- 8.4.1 Prototype-basierte Vererbung
- 8.4.2 Überschreiben von Eigenschaften und Methoden
- 8.4.3 Macromedia hebt den Finger: new vs. __constructor__
- 8.4.4 Der super-Operator
- 8.4.5 Schweres Erbe - eine Zusammenfassung
- 8.5 Bestehende Klassen erweitern
- 8.6 Klassen mit Grafik-Symbolen assoziieren
- 8.6.1 Das Traumhaus
- 8.6.2 Registrierung mit Object.registerClass()
- 8.6.3 Es kommt Leben in die vier Wände - Methoden und Eigenschaften
- 8.6.4 Richtfest - das Init-Objekt
- 8.6.5 Zwischen #initclip und #endinitclip
- 8.6.6 Vererbungs-Strategie für visuelle Klassen
9 Ereignisse
- 9.1 Was geht denn hier ab?
- 9.2 Große Ereignisse werfen ihre Schatten voraus
- 9.2.1 Eine, die immer redet
- 9.2.2 Ereignis-basierte Ausführung
- 9.2.3 Stars und Journalisten - Ereignisquellen und Empfänger
- 9.3 Listener
- 9.3.1 Zuhörer gewinnen - addListener()
- 9.3.2 Zuhörer verlieren - removeListener()
- 9.3.3 Zuhörer-Zombies
- 9.4 Sport frei - Zuhörer in Aktion
- 9.4.1 Bob anschieben - Key Listener
- 9.4.2 Mäuse machen - Mouse Listener
- 9.4.3 Shopping mit Zuhörern - TextField Listener
- 9.4.4 Gut gewählt - Selection Listener
- 9.4.4.1 Alte Schule: Fokus-Ereignisse im Spiegel betrachtet
- 9.4.4.2 Neue Schule: Selection Listener
- 9.4.4.3 Hohe Schule: Selection - Textauswahl
- 9.4.5 Bühne frei - Stage Listener
- 9.4.6 Geheime Botschaften - broadcastMessage
- 9.4.7 Vorsorgen für die Zukunft - ASBroadcaster
- 9.5 Was sonst noch passierte und passieren kann
- 9.5.1 Ruhe in Frieden: onClipEvent() und on()
- 9.5.2 Vertrauter Käse für Movieclips und Buttons - Mausereignisse
- 9.5.3 Vorsicht Falle - Gültigkeitsbereich und _parent
- 9.5.4 Bereiche an der Kette - Scope Chain
- 9.5.5 Aktiv, Aktiviert, Aktivierungs-Objekt
- 9.5.6 Frisch machen für eigenen Mauszeiger - updateAfterEvent()
- 9.5.7 Im Gleichtakt - Intervalle
- 9.5.7.1 setInterval()
- 9.5.7.2 Intervall-ID und clearInterval()
10 Filmsequenzen
- 10.1 Film ab
- 10.2 Die Geburt eines MovieClip-Objekts
- 10.2.1 Das Initialisierungsobjekt
- 10.2.1.1 Anhänglich: attachMovie()
- 10.2.1.2 Doppelgänger: duplicateMovieClip()
- 10.2.2 An der Leine - Referenz zur neuen Instanz
- 10.3 Tiefenmessung
- 10.4 Plätze tauschen mit Drag’n’Drop
- 10.4.1 swapDepth()
- 10.4.2 startDrag() und stopDrag()
- 10.4.3 _droptarget
- 10.5 Maskierter Täter
- 10.6 Farbige Aussichten
- 10.6.1 Color-Klasse
- 10.6.2 Alles wieder zurück
- 10.7 Vorsicht Schieber
- 10.7.1 Klasse Knopf mit Begrenzung
- 10.7.2 Aktiver Knopf
- 10.7.3 Klasse Slider mit gefährlichen Ecken
- 10.7.4 Passive Krönung - Listener-Schnittstelle einschieben
- 10.7.5 Stellung einnehmen
- 10.8 Malbretter
- 10.8.1 Linien zeichnen
- 10.8.2 Überlappende Füllungen
- 10.8.3 Gefährliche Kurven
- 10.9 Anecken - Squash
- 10.9.1 getBounds()
- 10.9.2 hitTest()
- 10.9.3 Das etwas andere Menü mit hitTest()
- 10.9.4 Kollisionserkennung mit getBounds() und hitTest()
- 10.9.5 Bildeintritt vs. Intervall-Auftritt
- 10.9.6 Game over
- 10.10 Nachladen
- 10.10.1 Ärger mit onData()/onLoad()
- 10.10.2 Ladestapel mit getBytesLoaded()/getBytesTotal()
- 10.10.3 Fortschrittsanzeige mit Tücken
- 10.10.4 Bilder laden
- 10.10.5 Nicht gefunden
11 Datenaustausch
- 11.1 Völlig losgelöst
- 11.2 Externe Dateien und Unicode
- 11.3 LoadVars - Austausch über Variablen
- 11.3.1 Daten laden
- 11.3.2 Alles da - Daten anzeigen
- 11.3.3 Ein Klasse Ticker
- 11.3.4 Formular abschicken
- 11.3.4.1 Der ActionScript Teil
- 11.3.4.2 ASP / JScript
- 11.3.4.3 PHP
- 11.3.4.4 CFML
- 11.3.4.5 JSP
- 11.3.5 Content-Length: Lange Nase mit getBytesTotal()
- 11.3.5.1 ASP / JScript
- 11.3.5.2 PHP
- 11.3.5.3 CFML
- 11.3.5.4 JSP
- 11.4 XML - Tauschen mit allen
- 11.4.1 DOM - Ausloten des XML-Objekts
- 11.4.1.1 Ding - Erzeugen eines XML-Objekts
- 11.4.1.2 Dong - Anhängliche Elemente und Textknoten
- 11.4.1.3 Peng - Knoten entfernen
- 11.4.1.4 Analogie XML DOM und Flash DOM
- 11.4.2 Daten laden
- 11.4.3 Alles da - Daten anzeigen
- 11.4.4 Schleifen lassen - der XML-Ticker
- 11.4.5 Rekursive Selbstfindung - XML in ein Array transformieren
- 11.4.6 Schnellzugriff mit dem Attribut „id“
- 11.4.7 XML Parser - Fehlerbehandlung
- 11.4.8 Achtung Umleitung - XML Newsfeed
- 11.4.8.1 ASP/JScript
- 11.4.8.2 PHP
- 11.4.8.3 CFML
- 11.4.8.4 JSP
- 11.4.8.5 Die ausgedienten Redirect-Skripte
- 11.4.9 Snapshot abschicken
- 11.4.9.1 Der ActionScript-Teil
- 11.4.9.2 ASP/JScript
- 11.4.9.3 PHP
- 11.4.9.4 CFML
- 11.4.9.5 JSP
- 11.5 Mixed Pickles - Variablen streuen, XML ernten
- 11.5.1 Der ActionScript Teil
- 11.5.2 ASP/JScript
- 11.5.3 PHP
- 11.5.4 CFML
- 11.5.5 JSP
- 11.6 Flash Remoting
- 11.6.1 Zufalls-Service - einfache Werte anfordern
- 11.6.2 Info-Service - komplexe Objekte anfordern
- 11.6.3 Auswahl-Service - XML-Objekt laden
- 11.6.4 SOAP - Webservice konsumieren
- 11.6.4.1 Währung - Umtauschraten
- 11.6.4.2 Babelfish - Übersetzen
- 11.6.4.3 Google
- 11.6.5 Bumerang - FLASH Scope in ColdFusion
- 11.6.6 SSAS - Server Side ActionScript
- 11.6.6.1 Klassen-Vergleich
- 11.6.6.2 CF.http()
- 11.6.6.3 CF.query() - RecordSet-Objekte
- 11.7 XMLSocket - Austausch in Echtzeit
12 Audio und Video
- 12.1 Mit Pauken und Trompeten
- 12.2 Sound
- 12.2.1 Das Sound-Objekt abhören
- 12.2.1.1 Klasse - ein erstes ernsthaftes Gespräch
- 12.2.1.2 Einer nach dem anderen - onSoundComplete()
- 12.2.1.3 Meisterhaft - Globale Sounds und andere Kanäle
- 12.2.1.4 Organisation - Virtuelles Mischpult-Objekt
- 12.2.1.5 Wissenswert - Laden eines SWF in ein anderes Level
- 12.2.1.6 Globalisierung - im Sinne von Planet Erde
- 12.2.1.7 Ruhe
- 12.2.2 Sound Loops
- 12.2.2.1 Organisation
- 12.2.2.2 Start-Synchronisation
- 12.2.2.3 Einblenden und Ausblenden
- 12.2.3 Externe MP3-Dateien laden
- 12.2.3.1 Streaming
- 12.2.3.2 Event-Sounds
- 12.2.3.3 Lade- und Positionsanzeige
- 12.2.3.4 Streamen und Abspielen
- 12.2.3.5 Playliste mit XML-Speisung
- 12.2.4 ID3-Tag für MP3-Dateien auslesen
- 12.3 Mikrofon
- 12.3.1 Alle mal herhören
- 12.3.2 Pegelanzeige
- 12.4 Kamera
- 12.4.1 Alle mal herschauen!
- 12.4.2 Bewegungsmelder
- 12.5 Video
13 Komponenten
- 13.1 Bauklötze staunen
- 13.2 Die einfachste Komponente der Welt
- 13.2.1 Ein bekanntes Skript
- 13.2.2 Ein eigenes Icon
- 13.3 WordChecker - Das Rundum-Sorglos-Paket
- 13.3.1 _targetInstanceName und horizontal Eigenschaften
- 13.3.2 Die Komponente entwerfen
- 13.3.3 Der erste Ansatz
- 13.3.4 addProperty() und Get/Set-Eigenschaften
- 13.3.4.1 Das Problem
- 13.3.4.2 Das Get/Set Prinzip
- 13.3.4.3 Get/Set-Eigenschaften am Prototype der Klasse
- 13.3.4.4 Get/Set-Ausgangswerte im Prototype definieren
- 13.3.5 Zugriffskontrolle, Optimieren und Verstecken
- 13.3.6 Live-Vorschau und das xch-Austauschobjekt
- 13.3.7 Ab ins Körbchen
- 13.3.8 Verpacken für Exchange: die MXI-Datei-Definition
- 13.3.9 Custom Actions
- 13.4 Andere Komponenten
14 Lokale Spezialitäten
- 14.1 Shared Objects - Cookies-Ersatz
- 14.1.1 Eigenschaften, Methoden und Ereignisse
- 14.1.2 SharedObject-Objekt ausloten
- 14.1.3 Datum des letztes Besuchs ermitteln
- 14.1.4 Benutzer-Rollenspiel
- 14.1.5 Löschzug
- 14.2 Local Connection - JavaScript-Zahnersatz
- 14.2.1 Eigenschaften, Methoden und Ereignisse
- 14.2.2 LocalConnection-Objekt ausloten
- 14.2.3 Ping - auf Sendung!
- 14.2.4 Schluss - Aus
15 Käfersuche
- 15.1 Krabbeln ja, aber nicht hier
- 15.2 Syntaxfehler und Warnmeldungen (Compiler)
- 15.2.1 Syntaxfehler
- 15.2.2 Warnungen
- 15.3 Laufzeitfehler (Interpreter)
- 15.4 Logische Fehler
- 15.4.1 Top 10 - die hartnäckigsten Käfer
- 15.4.1.1 Zuweisungsoperator statt Vergleichsoperator
- 15.4.1.2 Funktionsausführung statt Zuweisung einer Referenz
- 15.4.1.3 Verwendung falscher Datentypen/unerwartete Typenumwandlung
- 15.4.1.4 Fehlende Angabe von this in einem Event Handler
- 15.4.1.5 Der Einser-Wahnsinn
- 15.4.1.6 Das erste Element eines Arrays bekommt eine 0
- 15.4.1.7 Sortieralbtraum
- 15.4.1.8 Alles verdreht nach Array.reverse()
- 15.4.1.9 Schleifendurchlauf bringt zu viel ans Licht
- 15.4.1.10 Wer warten kann, ist klar im Vorteil
- 15.5 Player-, Plattform- und Performance-Probleme
- 15.6 Sicherheitsmängel
- 15.7 Kammerjägerausrüstung
- 15.7.1 trace()
- 15.7.2 Variablen/Objekte auflisten
- 15.7.3 Snapshot von Objekten
- 15.7.4 Geschwindigkeitsvergleiche
- 15.7.5 FLASM
A Werkzeugkasten
- A.1 #include - Externe Skripte einbinden
- A.2 ASSetPropFlags() - Attribute für Eigenschaften setzen
- A.3 ASNative() - die interne Verdrahtung
- A.4 Function.extends()
- A.5 Reguläre Ausdrücke
- A.6 WDDX
- A.7 Skript-Schnipsel für alle Lebenslagen