Tải bản đầy đủ (.pdf) (553 trang)

Flash 8 ActionScript ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (19.63 MB, 553 trang )

Arno Kohl
ActionScript 2
Ein Lehr- und Übungsbuch
1 3
ISBN 978-3-540-35179-5 e-ISBN 978-3-540-35182-5
DOI 10.1007/978-3-540-35182-5
Springer Heidelberg Dordrecht London New York
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbiblio-
grae; detaillierte bibliograsche Daten sind im Internet über abrufbar.
© Springer-Verlag Berlin Heidelberg 2011
Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die
der Übersetzung, des Nachdrucks, des Vortrags, der Entnahme von Abbildungen und Tabellen, der
Funksendung, der Mikroverlmung oder der Vervielfältigung auf anderen Wegen und der Spei-
cherung in Datenverarbeitungsanlagen, bleiben, auch bei nur auszugsweiser Verwertung, vorbe-
halten. Eine Vervielfältigung dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall
nur in den Grenzen der gesetzlichen Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik
Deutschland vom 9. September 1965 in der jeweils geltenden Fassung zulässig. Sie ist grund-
sätzlich vergütungspichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen des Urhe-
berrechtsgesetzes.
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk
berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im
Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher
von jedermann benutzt werden dürften.
Einbandgestaltung: KünkelLopka GmbH, Heidelberg
Gedruckt auf säurefreiem Papier
Springer ist ein Teil der Fachverlagsgruppe Springer Science+Business Media (www.springer.com)
Dr. Arno Kohl
Macromedia
Akademie für Medien


Gollierstraße 4
80339 München
Deutschland

v
In erster Linie gebührt all meinen Studenten und Schülern Dank dafür, dass sie
klaglos meinen gelegentlich sicher etwas anstrengenden Unterricht über sich er-
gehen ließen und mir so Gelegenheit gaben, den einen oder anderen Workshop am
lebenden Sujet auszutesten.
Besonderen Dank schuldet der Autor jenen, die aktiv mit Rat und Tat zur Seite
standen. Namentlich seien genannt:
– „eyelan“ Benedikt Hocke, der mit seiner raschen Auffassungsgabe, unvergleich-
lichem graschen Geschick und großer Phantasie eine frühe Phase des Buches
begleitete;
– Frau Nina Eichinger, die insbesondere ein passendes Layout entwickelte;
– Herr Richard Häusler, der angenehm kritisch größere Teile des Manuskripts gou-
tierte und manch einem hartnäckigen Fehler auf die Schliche kam.
Ein ganz großes Danke Schön an das Lektorat des Springer Verlags, das mit einer
Engelsgeduld jede Terminübertretung des Autors ertragen hat und so das Fertigstel-
len des Manuskriptes überhaupt erst ermöglichte.
Und schließlich sei auch denjenigen gedankt, die die Entwicklung des Skripts
langfristig mit kritischem Blick und manch aufmunterndem Kommentar begleiteten
(2006: „Wieweit bist Du denn schon?“, 2007: „Ist denn wenigstens ein Kapitel fer-
tig?“, 2008: „Hast Du schon angefangen?“, 2009: „Naja, wenn der Maya-Kalender
mit 2012 Recht hat, musst Du Dich jetzt auch nicht mehr beeilen“).
Danksagung

vii
Einleitung1 1
ActionScript: Geschichte, Versionen, Ausblick2 5

Programmentwicklung und Programmiersprachen3 11
3.1 Ansätze (Top-Down, Bottom-Up) 11
3.2 Algorithmus als Problemlösung 12
3.3 Hilfsmittel zur Entwicklung von Algorithmen 13
3.3.1 Flowcharts 14
3.3.2 Pseudo-Code 15
3.4 Beispiel-Algorithmus „Kaffee kochen“ 16
Programmierung und ActionScript4 27
Framework und Codeorganisation5 35
5.1 Skriptarten (Objekt- und Bildskript) 35
5.2 Anzahl der Bildskripte 37
5.3 Aufbau eines Skripts 37
Operatoren6 41
6.1 Zuweisungsoperator 42
6.2 Arithmetische Operatoren 42
6.3 Inkrement-/Dekrementoperator 43
6.4 Stringoperatoren 44
6.5 Vergleichsoperatoren 46
6.6 Logische Operatoren 48
6.7 Bit-Operatoren 50
6.8 Sonstige 51
Variablen7 55
7.1 Deklaration 55
7.2 Wertezuweisung 58
7.3 Reichweite 60
7.4 Parameter und Zählvariablen 62
7.5 Konstanten 62
Datentypen8 63
8.1 Boolean 64
8.2 Number 64

Inhaltsverzeichnis

viii Inhaltsverzeichnis
8.3 String 67
8.4 Null, undened 67
8.5 MovieClip 68
8.6 Object 68
8.7 Void 68
Arrays9 69
9.1 Arrays einrichten und die Länge denieren 69
9.2 Arrays bei der Deklaration füllen 70
9.3 Zugriff auf Inhalte 70
9.4 Arrays dynamisch füllen 72
9.5 Löschen von Elementen 74
9.6 Arrays sortieren und durchsuchen 77
9.7 Weitere Methoden 80
9.8 Mehrdimensionale Arrays 81
9.9 Assoziative Arrays 82
Funktionen10 85
10.1 Funktionsdeklaration und -aufruf 85
10.2 Funktionen ohne Bezeichner 86
10.3 Gültigkeit 87
10.4 Verschachtelung von Funktionen 88
10.5 Parameter 89
10.6 Funktionen mit Rückgabewert (return) 91
10.7 Von Flash zur Verfügung gestellte Funktionen 92
10.8 Rekursion 93
Kontrollstrukturen11 95
11.1 Bedingungen 95
11.1.1 Die if-Anweisung 95

11.1.2 Verschachtelte if-Anweisungen, logisches und, logisches oder 98
11.1.3 if else 99
11.1.4 else if 100
11.1.5 switch, break 101
11.2 Schleifen 103
11.2.1 for-Schleife 104
11.2.2 break, continue 108
11.2.3 while-Schleife 108
11.2.4 do while-Schleife 109
11.2.5 for in-Schleife 110
11.2.6 Endlosschleifen 111
MovieClip-Klasse12 113
12.1 Eigenschaften von MovieClips 113
12.1.1 Adressierung von MovieClips 113
12.1.2 _x, _y, _xmouse, _ymouse, _width, _height 119
12.1.3 _xscale, _yscale 123
12.1.4 _rotation, _alpha, _visible 125
12.1.5 blendMode 128
12.1.6 _currentframe, _totalframes 130
12.2 Ereignisse 130
ixInhaltsverzeichnis
12.2.1 onEnterFrame 131
12.2.2 Schaltächenereignisse von MovieClips 132
12.2.3 Maus-Ereignisse 135
12.3 MovieClip-Methoden 136
12.3.1 Zeitleistensteuerung 136
12.3.2 Objekte dynamisch einfügen 138
12.3.3 Drag and Drop 147
12.3.4 Kollision 148
12.3.5 Maskierung 150

12.3.6 Ausdehnung und Koordinaten 151
12.4 Die Mutter aller MovieClips: _root (_level0) 153
Zeichnungsmethoden der MovieClip-Klasse13 155
13.1 Linien, Kurven und Füllungen 156
13.2 Verlaufsfüllungen 160
13.3 Ereignisse, Methoden, Eigenschaften 165
13.4 Geometrische Grundguren (Kreis, Oval, Polygon, Stern) 165
String, Texteld, Textformat14 173
14.1 Strings erzeugen und String-Wert auslesen 173
14.2 Länge 174
14.3 Verkettung 174
14.4 Escape-Sequenzen und Sonderzeichen 174
14.5 ASCII-Zeichensatz 176
14.6 Teilstrings extrahieren 178
14.7 Teilstrings ermitteln 179
14.8 Groß-/Kleinbuchstaben 179
14.9 Text, Textfelder 180
14.10 Textauszeichnung/-formatierung 184
14.10.1 TextFormat 184
14.10.2 Formatierung mit HTML 188
14.10.3 Formatierung mit CSS 190
14.11 Darstellung größerer Textmengen 192
14.12 Eingabetext 193
Math-Klasse15 199
15.1 Eigenschaften: Konstanten 199
15.2 Methoden 200
15.2.1 Auf- und Abrunden 200
15.2.2 Zufallszahlen 201
15.2.3 Weitere Methoden 205
Color-/ColorTransform-Klasse16 207

16.1 Klassenpakete und Instanziierung von Klassen 207
16.2 Vollständiges Einfärben 208
16.3 Einfärben mit Hilfe einzelner Farbkanäle 209
Maus und Tastatur17 213
17.1 Die Mouse-Klasse 213
17.1.1 Eigene Cursor 213
17.1.2 Mausereignisse 215
17.2 Tastatur 218
x Inhaltsverzeichnis
BitmapData- und Filter-Klasse18 221
18.1 Bitmap versus Vektor 221
18.2 Instanziierung der BitmapData-Klasse 223
18.3 Eigenschaften der BitmapData-Klasse 224
18.4 Methoden der BitmapData-Klasse 224
18.4.1 Dispose() 225
18.4.2 FillRect(), oodFill() 226
18.4.3 GetPixel(), getPixel32(), setPixel(), setPixel32() 227
18.4.4 LoadBitmap(), draw(), copyPixels(), clone() 229
18.4.5 Noise(), perlinNoise() 232
18.5 Optimierung mit Hilfe von BitmapData 235
18.6 Filter 235
18.6.1 Bevel-Filter 236
18.6.2 Blur-Filter 237
18.6.3 DropShadow-Filter 238
18.6.4 Glow-Filter 238
18.6.5 GradientBevel-Filter 239
18.6.6 GradientGlow-Filter 239
18.6.7 ColorMatrix-Filter 240
18.6.8 Convolution-Filter 241
18.6.9 DisplacementMap-Filter 242

Sound19 245
19.1 Sound abspielen und stoppen 245
19.2 Einen Sound loopen 248
19.3 Externe Sounds 249
Externe Assets20 251
20.1 Laden externer swf-Dateien 252
20.2 Eigenschaften der geladenen Dateien 257
20.3 Anzeigen der Ladekontrolle (Preloader mit getBytesLoaded()) 263
20.4 Überblenden bei Ladevorgängen 270
20.5 Alternative Ladekontrolle (Preloader mit der MovieClipLoader-
Klasse) 275
20.6 Beispiel modulare Website 276
20.7 Code 280
XML21 281
21.1 Aufbau von XML-Dokumenten 281
21.2 Laden von XML-Dokumenten
(new XML, load(), onLoad, onData) 284
21.3 Zugriff auf den gesamten Inhalt einer XML-Datei
(rstChild, ignoreWhite) 286
21.4 Verarbeitung einzelner Daten 287
Tween- und TransitionManager-Klasse22 291
22.1 Tween-Klasse 291
22.2 Beschleunigungsklassen und -methoden 292
22.3 Eigenschaften (duration, nish, FPS, position, time) 294
22.4 Methoden 294
xiInhaltsverzeichnis
22.5 Ereignisse 295
22.6 Sukzessive Animation verschiedener Eigenschaften 296
22.7 TransitionManager-Klasse 298
22.8 Eigenschaften, Methoden und Ereignisse 299

22.9 Übergangstypen 300
Debugging23 303
23.1 Fehlertypen 303
23.2 Erste Fehlerkontrolle mit Auto-Format 304
23.3 Das Nachrichtenfenster 308
23.4 Der integrierte Debugger 312
Geskriptete Animationen24 317
24.1 Animationskategorien 317
24.2 Einmalige Animation 318
24.3 Animation mit onEnterFrame und fester Schrittweite 319
24.4 Animation mit setInterval() und fester Schrittweite 325
24.5 Zeitsteuerung 329
24.6 Dynamische Schrittweite 330
24.7 Feste Schrittanzahl 333
24.8 Fehlerquelle Schleife 337
24.9 Überprüfung von Grenzwerten 338
24.10 Grenzbedingung und Verwendung von Animationsobjekten 339
24.10.1 Löschen des Objekts 340
24.10.2 Bouncing off 342
24.10.3 Screen wrap 343
24.10.4 Neue Zufallsposition 344
Trigonometrie25 345
25.1 Einige Grundlagen der planen Trigonometrie 345
25.2 Abstände zwischen Objekten 347
25.3 Kreise und Ellipsen 349
25.4 Spiralen 351
25.5 Code 354
25.6 Spiralförmige Animation eines Objekts 354
25.7 Sinustäuschung 357
25.8 Drehung eines Objekts zu einem anderen Objekt 358

25.9 Interaktiver Schlagschatten 360
25.10 Code 362
Effekte (Text26 ) 365
26.1 Text vergrößern und ein-/ausblenden 365
26.2 Code 371
26.3 Einzelne Zeichen einfärben 372
26.4 Code 375
26.5 Einzelne Zeichen vergrößern und verkleinern 377
26.6 Code 378
26.7 Text mit Farbverlauf 378
26.8 Code 383
26.9 Schreibmaschineneffekt 385
xii Inhaltsverzeichnis
26.10 Text einblenden aus Zufallsbuchstaben 386
26.11 Code 389
26.12 Weitere Effekte 390
Effekte (Grak27 ) 391
27.1 Einfärben über einzelne Farbkanäle 391
27.2 Code 397
27.3 Organische Moleküle 399
27.4 Code 402
27.5 Beleuchtungseffekt mit Maske 402
27.6 Code 405
27.7 Überblendeffekt mit Maske 406
27.8 Code 409
27.9 Mosaik-Effekt 410
27.10 Code 413
Effekte (Maus)28 415
28.1 Maus(ver)folger 416
28.2 Code 426

28.3 Initialisierung von Animationen 428
28.4 Code 432
28.5 Eigenschaftsänderungen 433
28.6 Code 435
Interface und Navigation29 437
29.1 Check Boxes 437
29.2 Radio Buttons 440
29.3 Combo-Box 442
29.4 Code 446
29.5 Variante 447
29.6 Slider 448
29.7 Drag and Drop-Elemente 449
29.8 Code 453
29.9 Einfaches Fenster-System mit scale9Grid 454
29.10 Code 460
29.11 Varianten und Erweiterungen 462
Menü-Systeme30 463
30.1 Kreismenüs 464
30.2 Code 471
30.3 Elliptisches Menü 473
30.4 Code 479
30.5 Akkordeon 480
30.6 Code 485
30.7 Drop Down-Menü 486
30.8 Code 490
Bildergalerien31 493
31.1 Einfache Galerie mit Slider und internen Assets 494
31.2 Code 502
31.3 Eine Variante 503
xiiiInhaltsverzeichnis

31.4 Code 506
31.5 Galerie mit externen Assets 506
31.6 Code 518
31.7 Einige Varianten 520
Spiele32 521
32.1 Pairs 521
32.2 Code 527
32.3 Puzzle 528
32.4 Code 539
Ressourcen33 543
33.1 Literatur 543
33.2 Lernvideos 545
33.3 Webseiten 546
Sachverzeichnis 551
xv
Abbildung 1: Standardsymbole zur Entwicklung eines Flowcharts 14
Abbildung 2: Beispielhaftes Flussdiagramm (Programm logik) 15
Abbildung 3: Variablen- und Funktionsdenition 23
Abbildung 4: Anweisungsblock 24
Abbildung 5: Argument, Parameter, Schleife 24
Abbildung 6: Anweisung, Bedingung, Funktionsaufruf 25
Abbildung 7: Integrierter AS-Editor 31
Abbildung 8: Zuweisung eines Objektskripts 36
Abbildung 9: Fixieren des Skriptfensters 36
Abbildung 10: Operanden und Operatoren 41
Abbildung 11: Codehinweise zu Datentypen 55
Abbildung 12: Arraylänge, -index und -inhalte 71
Abbildung 13: Verwendung einer parametrisierten Funktion 90
Abbildung 14: Vorgegebene Funktionen 93
Abbildung 15: Fehlermeldung bei Endlosschleife 111

Abbildung 16: Eigenschaftsfenster eines MovieClips auf der Bühne 113
Abbildung 17: Verschachtelter MovieClip auto 115
Abbildung 18: Pfadhierarchie 116
Abbildung 19: Relative Adressierung mit _parent 119
Abbildung 20: Kartesisches Koordinatensystem 119
Abbildung 21: Kartesisches Koordinatensystem in Flash (Hauptzeitleiste) . 120
Abbildung 22: Skalieren eines MovieClips 123
Abbildung 23: Spiegelung mit _xscale 124
Abbildung 24: Positionierung der MovieClips 128
Abbildung 25: Überlappende MovieClips 134
Abbildung 26: Beispielhafter Aufbau der Übung 137
Abbildung 27: Kollisionserkennung mit hitTest() 150
Abbildung 28: Ergebnis von getBounds() bei verschiedenen
Koordinatensystemen 152
Abbildung 29: Beispiel einer geskripteten Zeichnung 157
Abbildung 30: Haus und Grundstück des Autors 158
Abbildung 31: Zur Funktionsweise von curveTo() 159
Abbildung 32: Zweifarbiger, radialer Farbverlauf Rot – Orange 161
Abbildung 33: Koronaartiger Grakeffekt mit Verlaufs füllung 163
Abbildung 34: Verschiebung des Verlaufsmittelpunkts 163
Abbildung 35: Oval 168
Abbildungsverzeichnis

xvi Abbildungsverzeichnis
Abbildung 36: Händisch erstelltes Textfeld 180
Abbildung 37: Textformatierung mit der TextFormat-Klasse 186
Abbildung 38: Erweiterte Textformatierung mit der TextFormat-Klasse 186
Abbildung 39: Verwendung der Komponente UIScrollBar 193
Abbildung 40: Eingabefeld für die Mail-Adresse 196
Abbildung 41: Einfärben eines MovieClips 208

Abbildung 42: Erweiterte Farboptionen einer MovieClip-Instanz 209
Abbildung 43: Eigener Mauszeiger in Aktion 214
Abbildung 44: Erzeugung eines Punktrasters mit setPixel() 228
Abbildung 45: Erzeugung eines zufälligen Musters mit setPixel32() 228
Abbildung 46: Ausschnittweises Kopieren einer Grak 231
Abbildung 47: Erzeugung einer Störung mit Hilfe der perlinNoise()-
Methode 234
Abbildung 48: Skinners „Panzengenerator“ 236
Abbildung 49: Bevel-Filter 237
Abbildung 50: Bevel-Filter mit maximaler Stärke 237
Abbildung 51: GradientBevel-Filter 239
Abbildung 52: 4 × 5-Matrix des ColorMatrix-Filters 240
Abbildung 53: DisplacementMap-Filter 243
Abbildung 54: Einstellungen für das Sound-Verhalten 246
Abbildung 55: Weitere Einstellungen für das Sound-Verhalten 247
Abbildung 56: Externer Ladevorgang in der Hauptzeitleiste 253
Abbildung 57: Auswirkungen von _root auf externe Ladeprozesse 255
Abbildung 58: Verschachtelte Ordnerstruktur für externe Lade vorgänge 255
Abbildung 59: Fehlermeldung bei fehlgeschlagenem Ladeaufruf 256
Abbildung 60: Eigenschaftsänderungen bei externen Ladevorgängen 258
Abbildung 61: Fehlerhafte Positionierung einer extern geladenen Grak 260
Abbildung 62: Bandbreiten-Proler zur Kontrolle des Ladevorgangs 261
Abbildung 63: Konguration der Download-Simulation 262
Abbildung 64: Simulation eines externen Ladevorgangs 262
Abbildung 65: Zeichnen der Elemente des Ladebalkens 269
Abbildung 66: Aufbau der Anwendung 273
Abbildung 67: Phase 1 des Ladevorgangs 274
Abbildung 68: Phase 2 des Ladevorgangs 274
Abbildung 69: Phase 3 des Ladevorgangs 274
Abbildung 70: Datei literatur1.xml im Internet Explorer 282

Abbildung 71: Fehlerhaftes XML-Dokument im Internet Explorer 283
Abbildung 72: Beschleunigungseffekt Back.easeIn 293
Abbildung 73: Beschleunigungseffekt Bounce.easeIn 293
Abbildung 74: Beschleunigungseffekt Elastic.easeIn 293
Abbildung 75: Beschleunigungseffekt Regular.easeIn 293
Abbildung 76: Beschleunigungseffekt Strong.easeIn 293
Abbildung 77: Sukzessives Ausführen mehrerer Tweens 297
Abbildung 78: Abprallen am rechten Rand 297
Abbildung 79: Fehlermeldung im Compiler-Fenster (1) 304
Abbildung 80: Fehlermeldung im Compiler-Fenster (2) 305
Abbildung 81: Fehlermeldung im Compiler-Fenster (3) 306
Abbildung 82: Fehlermeldung im Compiler-Fenster (4) 306
Abbildung 83: Fehlermeldung im Compiler-Fenster (5) 307
xviiAbbildungsverzeichnis
Abbildung 84: Auistung aller Variablen zur Laufzeit 313
Abbildung 85: Abspeichern des Inhalts des Nachrichtenfenster 313
Abbildung 86: Debugger-Fenster 314
Abbildung 87: Animation durch permanente Änderung der Drehung 319
Abbildung 88: Horizontale und vertikale Bewegung 320
Abbildung 89: Bewegung und Vorzeichenumkehr 323
Abbildung 90: Positionsberechnung über wechselnde Entfernung (1) 332
Abbildung 91: Positionsberechnung über wechselnde Entfernung (2) 332
Abbildung 92: Berechnung der Schrittweite aus Schrittanzahl und
Entfernung 334
Abbildung 93: Bewegung und Grenzbedingung 339
Abbildung 94: Überschreiten des Grenzwertes 339
Abbildung 95: Animationsobjekt innerhalb/außerhalb der Bühne 341
Abbildung 96: Abprallen am rechten Screenrand 343
Abbildung 97: Rechtwinkliges Dreieck 345
Abbildung 98: Abstandsmessung zwischen zwei beliebigen Punkten und

der Satz des Pythagoras 346
Abbildung 99: Trigonometrische Funktionen und Kreisberechnung 346
Abbildung 100: Der Einheitskreis 347
Abbildung 101: Abstandsmessung zwischen MovieClips 347
Abbildung 102: Spirale mit linear anwachsendem Radius 352
Abbildung 103: Spirale mit exponentiell anwachsendem Radius 353
Abbildung 104: Spiralförmig zu animierende Rakete 355
Abbildung 105: Spiralförmig animierter Bleistift 356
Abbildung 106: Sinustäuschung 358
Abbildung 107: Ausrichtung des Fahrzeugs vor der Drehung zur Maus 359
Abbildung 108: Veränderung des Schlagschattens per Maus 359
Abbildung 109: Animierter Text (Änderung von Größe, Deckkraft,
Position) 365
Abbildung 110: Einbetten eines Fonts in der Bibliothek 366
Abbildung 111: Animiertes Einfärben einzelner Buchstaben 373
Abbildung 112: Text mit statischem Farbverlauf 379
Abbildung 113: Farbverlauf Rot – Gelb – Grün 380
Abbildung 114: Verschiedene Ausrichtungen des Farbverlaufs 381
Abbildung 115: Aufbau der Animation mit Farbverläufen 382
Abbildung 116: Schreibmaschineneffekt 385
Abbildung 117: Text einblenden aus Zufallsbuchstaben 387
Abbildung 118: Färben über einzelne Farbkanäle 391
Abbildung 119: Einfärbung eines per Filter-Klasse erstellten Schattens 397
Abbildung 120: Organische Erscheinung per Ebeneneffekt 399
Abbildung 121: Simulation eines Spotlights 403
Abbildung 122: Überblendeffekt mit Hilfe einer Maske 406
Abbildung 123: Mosaik-Effekt (1) 410
Abbildung 124: Mosaik-Effekt (2) 410
Abbildung 125: Ermittlung eines Farbpixels 412
Abbildung 126: Text als Mausverfolger 416

Abbildung 127: Uhr in Ruhestellung 419
Abbildung 128: Uhrteile folgen der Maus 419
Abbildung 129: Aufbau der Uhr ohne Zeitanzeige 422
xviii Abbildungsverzeichnis
Abbildung 130: Blätteranimation nach Mausbewegung 428
Abbildung 131: Alternative Objektformen 433
Abbildung 132: Formänderung nach Mausbewegung 433
Abbildung 133: Check Boxes des Workshops 437
Abbildung 134: Aufbau von mcRecht 438
Abbildung 135: Radio Buttons 440
Abbildung 136: Aufbau von mcKreis 441
Abbildung 137: Combo-Box des Workshops 442
Abbildung 138: Bibliotheks-Elemente der Drag and Drop-Übung 449
Abbildung 139: Einzelelemente eines Fensters 455
Abbildung 140: Positionsbestimmung der Fensterteile 456
Abbildung 141: Kreisförmiges Menü 464
Abbildung 142: Aktiviertes Kreismenü 466
Abbildung 143: Aufbau des elliptischen Menüs 473
Abbildung 144: Anzeigen der Menüelemente 475
Abbildung 145: Scheitelpunkte der Animation 477
Abbildung 146: Akkordeon-Menü des Workshops 480
Abbildung 147: Aufbau des MovieClips mcFenster 481
Abbildung 148: Drop Down-Menü des Workshops 486
Abbildung 149: Originalgrak (verkleinert) 494
Abbildung 150: Thumbnail-Typ 1 494
Abbildung 151: Thumbnail-Typ 2 494
Abbildung 152: Thumbnail-Typ 3 494
Abbildung 153: Infograk mit Bildergalerie 495
Abbildung 154: Aufbau des MovieClips mcBild 496
Abbildung 155: Aufbau des MovieClips mcSlider 496

Abbildung 156: Aufbau des MovieClips mcMaske 497
Abbildung 157: Variante der Bildergalerie 503
Abbildung 158: Aufbau des MovieClips mcMaske bei nicht aktivierter
Maske 504
Abbildung 159: Aufbau der Galerie mit externen Assets 507
Abbildung 160: Ordnerstruktur der Galerie 507
Abbildung 161: Aufbau der Thumbnails 514
Abbildung 162: Aufbau Memory-Spiel 521
Abbildung 163: Karten und Bilderset 522
Abbildung 164: Zufallsverteilung der Karten in aKarten 523
Abbildung 165: Puzzlespiel 528
Abbildung 166: Umrisse der Puzzleteile 529
Abbildung 167: Registrierungspunkt und gedachtes Quadrat 529
Abbildung 168: Puzzleteile entsprechend der Array-Elemente 530
Abbildung 169: Begrenzungsrechteck und Registrierungspunkt von
mcPuzzle6 533
Abbildung 170: Puzzleteile ohne Maske 535
Abbildung 171: Puzzleteile mit BevelFilter 536
1
A. Kohl, ActionScript 2, doi:10.1007/978-3-540-35182-5, © Springer 2011
Einleitung
1
ActionScript (kurz: AS), die in Flash integrierte
Script-Sprache, hat sich im Laufe der Zeit zu einem
unverzichtbaren Tool im Arsenal des Webentwicklers
gemausert. Interaktive Anwendungen aller Art bis
hin zu sogenannten Rich Internet Applications las-
sen sich mittlerweile mit Hilfe dieser Sprache reali-
sieren. Diese Mächtigkeit hat allerdings ihren Preis,
steigt doch mit den Möglichkeiten zugleich auch die

Lernkurve, um sich AS anzueignen, mit jeder Flash-
Version weiter an. Darum möchte Sie das vorliegende
Buch bei der Hand nehmen und behutsam durch den
Script-Dschungel führen.
Einsteiger-Bücher gibt es viele, und wenn man ei-
nes kennt, kennt man die meisten anderen auch. De-
ren größtes Manko ist der Versuch, möglichst viele
AS-Befehle abzudecken. Das sieht zwar im Inhalts-
verzeichnis beeindruckend aus, doch spätestens dann,
wenn man an einem konkreten Projekt sitzt, werden
einem allzu schmerzhaft die Lücken bewusst, die man
sich angeeignet hat. Denn derartige Bücher führen
in die Themen anhand von Code-Schnipseln ein, die
zwar leicht verdaulich sind, aber kaum in die Tiefe ge-
hen. Außerdem stehen diese Schnipsel oft zusammen-
hanglos und mitunter etwas verlegen im Raum herum.
Für den Anfänger fehlt daher nicht selten die Orien-
tierung, wo man sie in einem konkreten, dem Produk-
tionsalltag nahe stehenden Zusammenhang einsetzen
kann. Das ist etwa so, als wollte man für eine Reise
nach Frankreich Französisch lernen und würde dabei
ein Lexikon verwenden anstelle eines Sprachführers.
Daher verfolgt das vorliegende Buch einen ande-
ren Ansatz. Wir verzichten hier auf eine lexikalische
Auistung und Behandlung aller AS-Sprachelemente.
Für diesen Zweck genügt zumindest prinzipiell die
Flash-Hilfe. Statt dessen konzentrieren wir uns auf
ausgesuchte Konzepte und Elemente sowie deren Be-
deutung in der Praxis. Eine derartige Auswahl muss
notgedrungen subjektiv ausfallen. Immerhin spiegeln

sich in ihr zahlreiche Jahre Programmier- und Lehrer-
fahrung wieder, so dass sie nicht völlig willkürlich ist.
Die Konzepte und Elemente werden zwar am konkre-
ten Beispiel von ActionScript behandelt, besitzen je-
doch zu einem beträchtlichen Teil sprachunabhängig
Gültigkeit. Dazu gehören beispielsweise Variablen,
Arrays oder Kontrollstrukturen, die von der Idee her
auch in anderen Sprachen wie PHP und Javascript
vorkommen. Ebenso ist die Beschreibung des Ent-
wicklungsprozesses eines Programms nicht an Flash
gebunden. Damit werden Sie in die Lage versetzt, sich
im Fall der Fälle relativ einfach in andere Sprachen
einzuarbeiten, falls Sie sich die vorgestellten Kon-
zepte angeeignet haben. Denn es gehört zu den ange-
nehmen Seiten der Programmierung, dass zahlreiche
Sprachen mit vergleichbaren Konzepten arbeiten, so
dass solide Kenntnisse in einer Sprache das Wechseln
zu einer anderen durchaus erleichtern können. Man
kann mitunter sogar Lösungen aus einer Sprache in
eine andere übertragen, ohne diese Lösung selbst von
Grund auf neu entwickeln zu müssen.
Der erste Teil des Buches beginnt mit einem Über-
blick über die Geschichte von ActionScript, gefolgt
von drei Kapiteln, die über die Vorgehensweisen
bei der Programmentwicklung u. a. anhand eines in
Pseudo-Code formulierten Programms zum Kochen
von Kaffee – Genuss für Geist und Körper gleicher-
maßen – informieren. Gerade die relative Zugänglich-
keit von AS verleitet schnell dazu, einfach mal „drauf
los zu programmieren“ – und spätestens dann, wenn

man den eigenen Code nach einigen Wochen erwei-
tern oder ändern muss, türmt sich ein Berg an Prob-
lemen auf, weil man ihn aufgrund mangelhafter Pla-
nung und Strukturierung weder richtig versteht noch
2 Kapitel 1 Einleitung
einfach modizieren kann. Daher kann die Bedeutung
sinnvoller Planung im voraus gar nicht oft genug be-
tont werden.
Anschließend folgen kapitelweise Beschreibungen
einzelner Sprachelemente und Strukturen wie Opera-
toren, Variablen, Kontrollstrukturen sowie der wich-
tigsten Klassen wie MovieClip, BitmapData, XML
etc. Besonderen Raum nimmt die MovieClip-Klasse
ein, da kaum eine Applikation ohne sie auskommen
kann. Diese Kapitel stellen das jeweilige Element vor
und geben einzelne Codebeispiele, um ihren Einsatz
zu verdeutlichen.
Damit man auch tatsächlich erfährt, was es mit die-
sen Elementen in der freien Wildbahn da draußen auf
sich hat, bietet der zweite Teil zahlreiche Workshops,
in denen sie immer wieder in den verschiedensten
Zusammenhängen auftauchen. Dadurch gewinnt das
ansonsten recht abstrakte Erlernen von „Vokabeln“ ei-
nen unmittelbaren Praxisbezug, denn die behandelten
Themen kommen zu weiten Teilen so oder in einer
abgewandelten Form auch tatsächlich im Produkti-
onsalltag vor. Aus didaktischen Gründen musste zwar
manches gekürzt oder geändert werden, da der Platz
im vorliegenden Buch einfach nicht ausreichte, alles
erschöpfend zu behandeln. So manches dort verwen-

dete Skript lässt sich noch optimieren. Damit ginge
jedoch die relativ leichte Zugänglichkeit und Ver-
ständlichkeit verloren. Dessen ungeachtet bieten die
Workshops genügend Masse, um einerseits die Spra-
che am lebenden Objekt einzuüben und andererseits
Einblick in die tägliche Praxis der programmierorien-
tierten Flash-Entwicklung zu gewinnen.
An dieser Stelle bemerkt der Autor zugegebe-
nermaßen mit einer gewissen inneren Freude, dass
man Skripte aus einem Buch nicht durch schlichtes
Kopieren in Flash einfügen kann, sprich: Das Ler-
nen mit diesem Buch macht nur Sinn, wenn Sie den
angesprochenen Code wirklich selbst eingeben. Wer
Buchstabe für Buchstabe alles abtippt, wird eher da-
rüber nachdenken, was er tut, als wenn man einfach
nur kopiert. Kopieren und kapieren sind zwei ver-
schiedene Dinge. Um das Schreiben zu erleichtern,
bendet sich am Ende der meisten Workshops des
zweiten Teils eine komplette Auistung des aktuell
behandelten Codes. Innerhalb der Workshops wird er
abschnitt-, mitunter auch zeilenweise entwickelt und
jeweils besprochen.
Einige Übungen im ersten und nahezu alle Bei-
spiele im zweiten Teil arbeiten mit einer sogenannten
Standarddatei. Damit ist lediglich eine simple Flash-
Datei gemeint, die über folgende Eigenschaften ver-
fügt:
Größe 800 × 600,

Bildwiederholrate 18 BpS,


Hintergrundgrak mit vertikalem Farbverlauf hel-

les zu dunklem Blau,
Hauptzeitleiste mit den Ebenen

actions, ob-
jects, gegebenenfalls zusätzlich bgd,
Als Grundobjekt ein einfacher MovieClip in Form

einer Kugel (Kreis mit radialem Farbverlauf).
Selbstverständlich sehen Ihre Flash-Dateien im Pro-
duktionsalltag anders aus: Mal muss ein Banner in
der Größe 720 × 90, mal eine Site im Seitenverhältnis
16 × 9, mal eine interaktive Animation mit 25 BpS vor
einem schwarzen Hintergrund erstellt werden – kurz,
es gibt endlos viele verschiedene Möglichkeiten,
mit welchen Einstellungen man im Einzelnen ange-
messen arbeitet. Da es im vorliegenden Buch um die
Aneignung von Techniken, nicht jedoch um die op-
timale Realisierung spezischer Applikationen geht,
verwenden wir einfach eine Standardeinstellung, die
Sie Ihren besonderen Bedürfnissen im Einzelfall an-
passen müssen.
Obgleich das Buch aus zwei Teilen besteht, ist es
nicht notwendig, erst Teil 1 und anschließend Teil 2
zu goutieren. Wer die theoretischen Grundlagen be-
herrscht, kann gerne direkt mit dem Workshop-Teil
arbeiten. In dem Fall sollte man allerdings das Ka-
pitel zu Framework und Code-Organisation kennen,

da dort eine Vorgehensweise erläutert wird, die in den
Workshops zur Anwendung kommt.
Wer keinerlei Skriptkenntnisse besitzt, sollte dage-
gen systematisch alle Kapitel des ersten Teils durch-
arbeiten, wobei es sich empehlt, die vorliegende
Reihenfolge einzuhalten, da sie aufeinander bezogen
sind. Die Kapitel des zweiten Teils dagegen liegen
unabhängig voneinander vor, so dass ein beliebiges
Kapitel zum Lernen verwendet werden kann. Wer sich
für Texteffekte interessiert, schlägt eben dort nach,
ohne vorher etwa das Kapitel Grakeffekte gelesen
haben zu müssen.
Die Workshops fassen thematisch zusammenhän-
gende Übungen in Kapiteln zusammen. So nden sich
etwa im Kapitel Effekte (Maus) verschiedene Effekte,
die in irgendeiner Form auf den Cursor bezogen sind.
Die Kapitel werden mit einigen allgemeinen Hinwei-
sen zur jeweiligen Bedeutung der konkreten Themen
3
und Übungen eingeleitet. Danach folgt ein Überblick
über das Ziel der Übung sowie eine sukzessive Auf-
listung der Arbeitsschritte in Form von Handlungs-
anweisungen. Die Schritte sind zumeist in einzelne
Blöcke unterteilt, die anschließend erläutert werden.
Besonderes Gewicht wird dabei auf die zugrunde lie-
gende Logik gelegt. Sie ist letztlich wichtiger als die
korrekte Syntax: Versteht man nicht, wie ein Problem
gelöst wird, nützt eine fehlerfreie Syntax nichts, weil
man nie in die Lage versetzt wird, eine eigene Prob-
lemlösung zu entwickeln. Eine Syntax zu erlernen ist

letztlich ein reiner Gedächtnisvorgang, während die
Logik einer weit darüber hinausgehenden Verstandes-
leistung bedarf.
An manchen Stellen wird eine konkrete Übung
durch Hinweise auf Varianten ergänzt, deren Code
mitunter vorgestellt wird und mitunter auch nur er-
wähnt wird. Solche Stellen sollten Sie als Aufforde-
rung verstehen, um eigene Lösungen zu entwickeln.
Der in den meisten Praxisbeispielen vorgestellte
Code lässt sich zwar mit einigen Änderungen direkt
auf eigene Projekte übertragen, doch sollte man sich
im Klaren sein, was er im Einzelnen bedeutet. Dieses
Buch ist in erster Linie als Lehrbuch konzipiert und
nicht als Kochbuch mit einfach zu kopierenden Re-
zepten bzw. Codeschnipsel.
Viele Probleme ermöglichen mehrere Lösungs-
wege und so kann hier vorgestellter Code nur als ein
möglicher, in der Praxis bewährter Weg, aber beileibe
nicht als allein selig machender verstanden werden.
Gerne würde der Autor behaupten, er habe aus di-
daktischen Gründen bewusst einige Fehler eingebaut.
Tatsächlich sind derartige Fehler bei dem vorliegenden
Seitenumfang einfach unvermeidlich und der mensch-
lichen Schwäche des Autors geschuldet. Dafür sei der
Leser hier bereits um Entschuldigung gebeten.
Happy Coding!
5
A. Kohl, ActionScript 2, doi:10.1007/978-3-540-35182-5, © Springer 2011
ActionScript:
Geschichte, Versionen, Ausblick

2
Flash stellt eine vollständige Entwicklungsumgebung
und ein Autorensystem für Online- und Ofineanwen-
dungen nahezu jeder Art dar. Aufgrund seiner umfas-
senden Funktionalität hat es sich innerhalb relativ we-
niger Jahre von einem ursprünglich doch recht simpel
gestrickten Animationsprogramm zum Standard ins-
besondere bei der Entwicklung von hoch interaktiven,
multimedialen Anwendungen gemausert. Zu diesem
enormen Erfolg trug ganz wesentlich die integrierte
Skriptsprache ActionScript bei, die mittlerweile annä-
hernd so mächtig geworden ist wie eine vollwertige
Programmiersprache.
Dabei wiesen die sehr bescheidenen Anfänge
von ActionScript keinesfalls in die Richtung, die
die Sprache nach einigen Jahren eingeschlagen hat.
Denn Flash erblickte unter dem Namen FutureSplash-
Animator als nettes kleines Animationsprogramm in
Konkurrenz zu animierten gif-Dateien das Licht der
Welt. 1996 wurde das Programm samt deren Entwick-
ler von der im sonnigen Kalifornien ansässigen Firma
Macromedia übernommen. Da der Schwerpunkt auf
Animation lag, war die Scriptfähigkeit notwendiger-
weise bedeutungslos. In den ersten drei Flash-Versio-
nen bestand sie lediglich aus sehr einfachen Befehlen,
mit denen man Navigationen ähnlich einer Videosteu-
erung vornehmen konnte. So war es beispielsweise
möglich, eine Zeitleiste anzuhalten und abzuspielen
oder zu einem bestimmten Frame zu springen. Dabei
handelte es sich um weitgehend vorgefertigte Verhal-

tensweisen, also fertigen Skripten, die man mit Hilfe
von Eingabefeldern parametrisieren konnte. Ein di-
rekter Zugriff auf den Code existierte nicht.
Erst mit Flash 4 schlug gewissermaßen die Ge-
burtsstunde von ActionScript als einer eigenständigen
Scriptsprache mit Elementen, wie man sie von anderen
Sprachen her gewohnt ist. Dazu gehören Schleifen,
Variablen und Ausdrücke, was erstmals das Erstellen
umfangreicher, durchaus anspruchsvollerer Skripte
ermöglichte. Ofziell rmierte die Sprache unter der
Bezeichnung actions, intern verwendete man schon
den heute geläugen Namen ActionScript .
Ab dieser Version wurde die Sprache recht konse-
quent ausgebaut und immer näher an internationale
Standards herangeführt. Bereits Flash 5 erlaubte den
uneingeschränkten Zugriff auf den Code mit Hilfe ei-
nes integrierten Editors, ohne jedoch auf die von den
Vorgängern her bekannte Möglichkeit eines simplen
Zusammenklickens von Codeblöcken völlig zu ver-
zichten. Dahinter stand die eigentlich bis Flash 9 bzw.
CS 3 gültige Philosophie, zwei verschiedene Ziel-
gruppen anzusprechen: Einerseits den Programmie-
rer, der nicht davor zurückschreckt, komplexe Skripte
zu entwickeln, und den Designer, der sich zwar mehr
auf die Animationsfähigkeiten von Flash konzentriert,
aber gleichzeitig auf eine einfache Art Interaktionen
skripten möchte. Da die Sprache am ECMA 262- bzw.
ECMAScript3-Standard ausgerichtet wurde, fanden
sich Programmierer, die zuvor insbesondere mit Ja-
vascript gearbeitet hatten, recht schnell zurecht. Ein

positiver Nebeneffekt war die relativ leichte Portier-
barkeit von Code aus einer Sprache in eine andere.
Um die Entwicklung zu vereinfachen, konnte man
zudem in sogenannte Smart-Clips Code und Objekte
hineinpacken, so dass sie sich als fertige Elemente
einsetzen ließen, ohne dass man auf den Code zugrei-
fen musste. Ein bisschen erinnerte dieses Konzept an
die Behaviors von Director, des damals noch großen
Bruders von Flash, das ebenfalls von Macromedia
entwickelt wurde.
Mit der Versionsnummer 5 wurde Flash, rückbli-
ckend betrachtet, tatsächlich erwachsen. Denn es ge-
lang, das Image eines vornehmlich für zappelige Intros
6 Kapitel 2 ActionScript: Geschichte, Versionen, Ausblick
und Animationen geeigneten Entwicklungstools abzu-
legen (tatsächlich waren diese zappeligen Intros aber
weniger dem Tool als vielmehr den betreffenden Ent-
wicklern anzulasten). Nicht zuletzt eben Action Script
zeigte, was, wenn es voll ausgereizt wurde, möglich
war – von kompletten, durchaus userfreundlichen,
hoch interaktiven Websites über datenbankgestützte
Anwendungen bis hin zu den auch heute noch allge-
genwärtigen Spielen reichte die Anwendungspalette.
Beügelt – oder muss man sagen: berauscht? – vom
Erfolg schob Macromedia mit Flash MX, entstanden
zu einer Zeit, als es plötzlich unmodern geworden war,
Versionsnummern zu verwenden, eine stark erwei-
terte Version von ActionScript nach. Die wichtigste,
die Sprache partiell bis heute prägende Neuerung war
ein alternatives Ereignismodell, das es erlaubte, in

einem einzigen Bildscript allen Objekten die benö-
tigten Ereignisse und Aktionen zuzuweisen. Die Ver-
wendung eigenständiger Objektscripte wurde damit
prinzipiell obsolet. Dadurch gewann der Sourcecode
an Übersichtlichkeit, denn die endlos verschachtelten
Objekte (Movieclips und Buttons) machten es bisher
ausgesprochen leicht, Code irgendwo regelrecht zu
vergraben. Die Standardisierung von AS wurde vor-
angetrieben durch eine noch striktere Beachtung des
ECMA-Standards.
Neben einer erweiterten, umfangreichen Funk-
tionsbibliothek verfügte Flash MX über eine neue
API, die es erlaubte, dynamische Vektorgraken zu
programmieren. Aus den Smart-Clips entwickelten
sich die komplexeren Komponenten, die mitunter
schon den Charakter eigenständiger Anwendungen
annehmen konnten. Als kleines Schmankerl bot man
Programmieren die Möglichkeit prototypbasierter ob-
jektorientierter Programmierung, wenn auch in einer
recht rudimentären Form.
Der starke Ausbau der Scriptmöglichkeiten ver-
deutlichte zugleich, in welche Richtung man sich die
Weiterentwicklung des Programms dachte – letztlich
eine Grundsatzentscheidung, die im Großen und Gan-
zen bis zur aktuellen Version 11 bzw. CS5 beibehal-
ten wurde. Denn während jede neue Version immer
ausgeklügeltere Features für den Programmierer bot,
wurden die Designer hinsichtlich der Grakwerk-
zeuge bis heute nur mit wenigen interessanten Neue-
rungen bedacht, nämlich die längst überfälligen Ebe-

neneffekte in Flash 8, die in der Tat beeindruckende
Videounterstützung ab Flash MX 2004 und Bones-
Animation sowie (leider nur halbausgegorenes) 3D in
CS4. Mittlerweile scheint auch die Unterstützung der
Designer in der Programmierung zu bröckeln, wird
doch ActionScript mit jeder Version komplexer und
für einen eher unbedarften Neuling undurchdringli-
cher. Dabei waren es gerade die Designer, die Flash
einst entdeckt hatten!
Schon damals wurde als Parole die Entwicklung
von RIA, Rich Internet Applications, ausgegeben, also
komplette, nicht selten datenbankgestützte Online-
Anwendungen. Dem war jedoch aller Euphorie zum
Trotz Flash (noch) nicht gewachsen, wie der Online-
Auftritt von Macromedia selbst bewies.
Der Nachfolger Flash MX 2004 machte einen wei-
teren großen Schritt nach vorn, indem neben die be-
stehende ActionScript -Version das neue AS 2.0 trat,
das u. a. eine bessere Fehlerkontrolle durch eine strikte
Typisierung, ein leistungsfähigeres, wenn auch gegen-
über vorher umständlicheres Listener-Ereignismodell
und vor allem eine an höhere Programmiersprachen
angelehnte objektorientierte Programmierung ermög-
lichte. War Flash mit Version 5 erwachsen geworden,
so geschah dasselbe bei ActionScript mit Version 7
(bzw. MX 2004).
Hier wie auch an anderer Stelle musste man als
Entwickler jedoch der Entwicklungsgeschichte des
Programms Tribut zollen: Um die Abwärtskompatibi-
lität zu älteren Flash-Playern zu bewahren, erfolgte die

Kontrolle der Typisierung ausschließlich in der Auto-
renumgebung, während sich der Player wie schon zu-
vor genügsam mit, um es böse zu formulieren, „Code-
salat“ zufrieden gab. Faktisch bedeutete dies, dass AS
2.0 Code durch die AVM (ActionScript Virtual Ma-
chine), die den erstellten Code interpretiert, in AS 1.0
umgewandelt wurde. All die schönen neuen Möglich-
keiten, die eine an höhere Programmiersprachen an-
gelehnte Struktur erlaubten, wurden damit partiell zu-
nichte gemacht, und auch die Performance entsprach
nicht dem, was man erwarten darf. Erst Flash 9 hat
hier zu einer grundlegenden Änderung geführt.
Aus Entwicklersicht bot ActionScript damit im-
merhin eine stabilere Programmierung und eine grö-
ßere Funktionalität. Andererseits allerdings stieg die
Lernkurve für Scriptanfänger stark an. Gerade der
leichte Zugang zum Scripting war ja bisher eine der
wesentlichen Stärken von Flash gewesen. Dessen ein-
gedenk entschied sich Macromedia zu einem Beibe-
halten von AS 1.0.
Konsequenter als der Vorgänger ermöglichte
Flash 8, das sich wieder mit einer Versionsnummer
7
schmücken durfte, objektorientiertes Programmie-
ren. Die Entwickler spendierten dem Programm eine
umfangreiche Klassenbibliothek insbesondere zur
direkten Manipulation von Bitmapgraken auf Pixel-
ebene sowie zum Up- und Download von Dateien.
Der Zugriff auf Bitmaps erlaubte geskriptete Ef-
fekte, die zuvor gar nicht oder nur unter erheblichem

Aufwand möglich waren. Man denke nur an Bump-
mapping, eine Technik, die auf zweidimensionalen
Objekten eine dreidimensionale Oberäche durch
Tiefeninformationen simuliert. Allerdings erwiesen
sich insbesondere die neuen Filter-Klassen im Ge-
brauch als recht sperrig. So verlangen sie nach – sa-
lopp formuliert – einem Dutzend Picht- und einem
weiteren Dutzend optionaler Parameter, deren Sinn
nicht immer leicht zu erkennen ist. Eigentlich sollte
in einem derartigen Fall die Programmhilfe erschöp-
fend Auskunft erteilen. Aber Flash 8 präsentiert sich
als die erste Version, deren Dokumentation neuer Be-
fehle und Elemente so unverständlich ist und deren
Beispiele so unglücklich gewählt wurden, dass sie für
Skript-Einsteiger faktisch fast schon wertlos ist. Man
gewinnt den Eindruck, sie sei von Spezialisten für
Spezialisten geschrieben – was aber gerade dem Sinn
einer Hilfe widerspricht und angesichts der aufgrund
der Sprachkomplexität steil angestiegenen Lernkurve
schlicht eine Fehlentscheidung darstellt.
Flash 9, 2007 auf dem deutschen Markt erschie-
nen, stellt vielleicht nicht nur einen neuen Meilen-
stein, sondern sogar einen Wendepunkt dar. Denn
diese Version wartet mit einer stark überarbeiteten,
neuen Version der Scriptsprache, nämlich AS 3.0
auf, die konsequent objektorientiert aufgebaut ist und
sich eigentlich kaum mehr von einer Hochsprache
unterscheidet. Ihr wurde im Flash-Player eine eigene
Virtual Machine, AVM2, gewidmet, die unabhängig
neben der aus Kompatibilitätsgründen beibehaltenen

AVM1 enthalten ist. Sie zeichnet sich endlich durch
die längst fällige höhere Performance aus, setzt aber
eben auch das erheblich komplexere AS 3.0 voraus.
Die Version 10 baut AS 3.0 aus, bietet die Möglich-
keit, Objekte statt Frames zu tweenen, verfügt über
einen modizierten Editor für Tweens und beschenkt
den Entwickler, wie erwähnt, mit inverser Kinema-
tik und 3D. Dessen ungeachtet bleibt noch Raum für
viele weitere Features, die zukünftige Versionen von
Flash sicher bringen werden. Interessanterweise hat
der deutsche Markt nach Angaben des Herstellers so
an Bedeutung zugenommen, dass die lokalisierte Ver-
sion von Flash diesmal früher erschienen ist als sonst
üblich.
Im Rückblick zeigt sich eine permanente, durch-
aus viele Wünsche der Flash-Entwickler berücksich-
tigende Weiterentwicklung von AS, das sich im Laufe
der Jahre zu einer mächtigen Skriptsprache mauserte.
Sie steht zur Zeit noch konkurrenzlos da – auch wenn
sich am Horizont in Form von Microsofts Silverlight
sowie HTML5 dunkle Wolken andeuten.
Der enorme Erfolg von AS birgt gleichzeitig ein
Risiko in sich, das in keiner Version so deutlich zum
Vorschein trat wie bei Flash 9 bzw. AS 3.0. Denn
diese Sprachversion ist derart umfangreich geworden,
dass sich ein Einsteiger mit einer fast ähnlich steilen
Lernkurve herumschlagen muss wie bei einer höheren
Programmiersprache. Insofern steht Flash an einem
Scheideweg: Sollen zukünftige Versionen die Funk-
tionalität der Scriptsprache wie bisher weiter aus-

bauen? Wie wäre es beispielsweise mit einer echten
3D-Unterstützung, wie sie bereits seit Jahren der lang-
sam in die Vergessenheit sinkende, einst große Bruder
von Flash, nämlich Director, beherrscht? Das häug
gehörte Argument, damit wachse der Player notwen-
digerweise auf eine Größe von mehreren MB an,
wird immer unbedeutender angesichts der Tatsache,
dass DSL mittlerweile als Standard gelten darf. Das
würde natürlich alle professionellen Entwickler und
Programmierer freuen, geschähe aber zum Leidwesen
der Designer und Gelegenheitsprogrammierer.
Oder soll man stärker die Designer berücksichti-
gen, die nach Jahren erst wieder mit den Ebeneneffek-
ten in Flash 8 und der IK sowie einem überarbeiten
Motion-Editor in Flash 10 ein Zückerchen geboten
bekamen, während sich die meisten anderen neuen
Features eher auf die Programmierung bezogen? So
mancher Designer würde sich eine bessere Unterstüt-
zung bei Animationen wünschen. Schön wären bei-
spielsweise verschiedene Kamera-Perspektiven, wie
sie etwa in ToonBoom-Studio schon lange integriert
sind. Sie würden die Erstellung von Animationen
nicht unwesentlich erleichtern.
Unabhängig davon, wie zukünftige Flash-Versionen
aussehen, sind heutige „Flasher“ zunehmend gezwun-
gen, mit ActionScript umzugehen. Denn eben weil es
nicht mehr das simple Animationstool von einst ist,
sondern eine mächtige Entwicklungsumgebung, deren
Potential aber erst wirklich ausgeschöpft wird, wenn
man sich der Scriptsprache bedient, werden selbst

Designer mit Programmierung konfrontiert. Moderne
8 Kapitel 2 ActionScript: Geschichte, Versionen, Ausblick
Webseiten glänzen nicht alleine durch attraktives De-
sign, sondern bieten ein hohes Maß an Funktionalität,
das sich nur noch über Programmierung herstellen
lässt. Das gilt erst recht für Applikationen, also voll-
ständige Anwendungen, die, glaubt man den Auguren
der Branche, dereinst Desktop-Applikationen weitge-
hend ersetzen werden (auch wenn das noch eher Zu-
kunftsmusik darstellt). Aus dem Flash-Designer wird
ein Flash-Entwickler, für den solide Grundkenntnisse
in ActionScript unverzichtbar sind.
Damit stellt sich die Frage nach der AS-Version,
mit der man arbeiten soll. Für den gestandenen Pro-
grammierer kann die Antwort nur lauten: AS 3.0.
Denn so lassen sich endlich Konzepte umsetzen, die
aus der professionellen Softwareentwicklung bekannt
und jahrelang erfolgreich eingesetzt wurden. Gerade
größere, komplexere Projekte protieren von den
Möglichkeiten dieser Version.
Die Mehrzahl der Flash-Entwickler gehört jedoch
(immer noch) nicht zu dieser Kategorie, sondern
stammt zumeist aus dem Bereich des Designs und der
Web-Entwicklung. Ihnen fehlen daher oft die formalen
Voraussetzungen, um problemlos mit einer derart kom-
plexen, an eine Hochsprache angelehnten Scriptspra-
che zu arbeiten. Lohnt sich der Einstieg in AS 3.0?
In den meisten Fällen lautet die Antwort derzeit
wohl: Nein. Das mag überraschen, zumal in einem
Buch, das sich mit Programmierung befasst. Doch

sollte man mit beiden Füssen auf dem Boden der Re-
alität bleiben:
Für einen Nicht-Programmierer steigt die Lern-

kurve bei AS 3.0 so stark an, dass man sich genauso
gut direkt auf eine Hochsprache wie Java stürzen
kann. Wie viel Web-Entwickler, prozentual gese-
hen, brauchen Java wirklich? Für ein „normales“
Web-Projekt lohnt sich der Aufwand nicht, eine
Hochsprache zu erlernen, und AS 3.0 liegt, wie
gesagt, aufgrund seiner Komplexität recht nahe an
einer derartigen Hochsprache.
Der Erstellungsaufwand für eine Flash-Anwen-

dung erhöht sich zunächst, da AS 3.0 einen recht
konsequenten objektorientierten Ansatz verfolgt.
So verlangt nun das früher so einfache Zuweisen
eines Ereignisses, abgehandelt in einer einzigen
Zeile, umständlich nach einem Listener sowie ge-
gebenenfalls dem Import von Klassen.
Für AS 3.0 reicht es nicht aus, einfach nur neue Be-

fehle zu erlernen. Vielmehr steckt eine konsequente
Objektorientierung dahinter, die dazu zwingt, vor
einem Projekt eine saubere objektorientierte Ana-
lyse zu erstellen. Sonst kann es schnell geschehen,
dass man viele verschiedene Klassen anlegt, die
mehrfach dasselbe tun – als Ergebnis erhält man
mindestens eben so gefährlichen Codesalat, wie er
gerne von gestandenen Programmierern den AS1-

Skriptern vorgeworfen wird. Eine saubere Klas-
senstruktur erhält man nicht en passant, sondern
bedeutet einen enormen Lernaufwand. Aus jahre-
langer Dozententätigkeit weiß der Autor, dass ge-
rade dieser Punkt vielen Webentwicklern enormes
Kopfzerbrechen bereiten kann und dass viele sich
gar nicht die Zeit nehmen (können), um hier richtig
einzusteigen.
Flash hatte den enormen Vorteil, dem Designer die

Möglichkeit zu bieten, relativ einfach Interaktio-
nen und komplexere Anwendungen zu program-
mieren. Es konnte zumindest prinzipiell alles aus
einer Hand entstehen. Wagner spricht zutreffend
von der Ein-Mann-Show (Mobile Games mit Flash,
p. 8). Das ist zweifelsohne eine der Gründe für die
enorme Popularität von Flash als Autorensystem.
Mit AS3 ändert sich das grundlegend: die Entwick-
ler werden zu einem Spezialistentum gezwungen,
bei dem eine deutliche Trennung zwischen Coder
(Programmierer im eigentlichen Wortsinne) und
Designer entsteht. AS3 ist schlicht zu komplex,
um auf die Schnelle eine Applikation zu skripten
und dabei wirklich zu wissen, was man tut. OOP ist
eben nichts, was man mal en passent erledigt. Den
Informatiker freut’s, den Designer graust’s.
Schon aus rein pragmatischen Gründen wird sich die
Mehrzahl der Flash-Entwickler daher sinnvollerweise
eher mit AS 2.0 anstatt 3.0 befassen müssen (wollen,
sollen). Und dem trägt auch dieses Buch Rechnung,

indem es sich weitgehend auf AS 2.0 beschränkt.
Bereits Version 2.0 bietet so viele Möglichkeiten,
dass sie i. d. R. gar nicht ausgeschöpft werden. Auch
vor diesem Hintergrund macht es wenig Sinn, sich
eine neue, noch mehr (genau so wenig ausgereizte)
Features bietende Version anzueignen. Es ist schon er-
staunlich, wie groß beispielsweise die Kluft zwischen
den Möglichkeiten, welche die in Flash 8 eingeführte
BitmapData-Klasse bietet, und deren konkrete Ver-
wendung ist. Anstelle der ColorTransform-Klasse n-
det nach wie vor die veraltete Color-Klasse Verwen-
dung. Und die Rechnung mit einer Matrix, die uns in
AS 2.0 an mehreren Stellen begegnet und Potential
vor allem bei der Programmierung grascher Effekte
9
besitzt, wird so wenig eingesetzt, weil sie für viele
Flash-Entwickler eher ein Mysterium Tremendum als
ein sinnvolles Hilfsmittel darstellt.
Das Problem der richtigen Sprachversion hat wie
kaum ein anderes die Gemüter der Flash-Entwickler
erhitzt, und so manches Flash-Urgestein wie etwa
Philipp Kerman entscheidet sich bei kleineren bis
mittleren Projekten zugunsten von 2.0 anstatt von 3.0.
Zudem wartet die neue Sprachversion, falls man nicht
mit CS 4, sondern dem Vorgänger arbeitet, mit einigen
Ungereimtheiten auf, die das Programmieren partiell
erheblich erschweren. Dazu gehört insbesondere das
gegenüber bisher ausgesprochen unglücklich gehand-
habte Entfernen extern geladener swf-Dateien sowie
eine deutlich optimierfähige Garbage Collection. Kein

Geringerer als Colin Moock hat sich ausführlich mit
derartigen Problemen beschäftigt, und einen Einblick
in die Diskussion ndet der geneigte Leser unter:
C. Moock: „The Charges Against ActionScript 3.0“,
www.insideria.com/2008/07/the-charges-against-ac-
tionscri.html.
Brendan Hall und Joshua Davis, beides prolierte
Flash-Entwickler, die schon frühzeitig das Potential
von Flash sowohl in programmiertechnischer wie de-
signerischer Hinsicht ausreizten, wobei insbesondere
Davis beide Bereiche zu verknüpfen suchte, urteilen
über den heutigen Stand:
„Flash has matured incredibly in the past decade,
but it has done so in a way that has blocked non-de-
velopers from even getting started. The simple fact
of the matter is that with older versions of Flash you
could learn the tool and how to program ActionScript
almost entirely through creative play. With the latest
iterations, unless you have a background in object-ori-
ented programming, that method of learning by doing
is simply not an option.“
Als Konsequenz aus dieser Malaise entwickelten
sie unter dem Stichwort „Hype“ ein Framework, das
jedem Interessierten den schnellen und einfachen Zu-
griff auf die Programmierfähigkeiten von Flash er-
laubt, ohne sich in eine komplex gewordene Program-
miersprache einarbeiten zu müssen.
11
A. Kohl, ActionScript 2, doi:10.1007/978-3-540-35182-5, © Springer 2011
Programmentwicklung

und Programmiersprachen
3
Programmieren ist eine Wissenschaft für sich – das
mag banal klingen, aber gerade der Neuling, der sich
naturgemäß kopfüber ins Programmieren stürzt, wird
sehr schnell an Grenzen stoßen. Einerseits hat sich Ac-
tionScript zu einer recht komplexen, mächtigen Spra-
che entwickelt, andererseits erfordern heutige Flash-
Projekte, die rasch auf viele Hundert oder Tausend
Zeilen Quellcode anwachsen, sorgfältige Planung,
will man nicht in einem Wust aus Spaghetti-Code
und geskriptetem Nonsens untergehen. Angemessene
Programmentwicklung setzt i. d. R. strukturiertes,
überlegtes Vorgehen und systematische Planung vo-
raus, um einerseits möglichst efzient und anderer-
seits möglichst fehlerfrei arbeiten zu können. Insofern
gleicht das Programmieren einer Anwendung dem
Bau eines Hauses: Bevor man die Baugrube ausheben
kann, muss man sich erst einmal einen Konstruktions-
plan zurecht legen, an dem sich die einzelnen Baupha-
sen orientieren können.
3.1 Ansätze (Top-Down, Bottom-Up)
Es gibt keinen Königsweg zum guten Programm, aber
im Laufe der Zeit haben sich einige Vorgehenswei-
sen herausgebildet, um einem die Arbeit zumindest zu
erleichtern. Zu den erfolgversprechendsten Methoden
gehören der Top-Down- und der Bottom-Up-Ansatz.
Der Top-Down-Ansatz versucht, unabhängig von
konkreten Details einen Gesamtüberblick über ein
Problem zu erhalten. Im nächsten Schritt wird es in

möglichst wenige, z. B. drei oder vier, Teilprobleme
zerlegt. Auch auf dieser Stufe geht es noch nicht
vornehmlich um einzelne Details. In einem weiteren
Schritt wird jedes Teilproblem seinerseits in einige
wenige Teile zerlegt. Dies führt man solange durch,
bis eine weitere Unterteilung nicht mehr möglich
erscheint. Dann bendet man sich auf der untersten
Stufe und damit zugleich bei kleinsten Details. Dieser
Ansatz beschreibt ein Problem in einer Art Pyramide
und arbeitet sich von allgemeinen Fragestellungen
vor bis hin zur kleinsten Einzelheit. Insofern stellt
dieser Ansatz eine große Kiste zur Verfügung, in die
wir alle Elemente hineinpacken, die ein Problem oder
eine Aufgabenstellung charakterisieren. Ein zeitlicher
Ablauf oder eine logische Verknüpfung zwischen den
einzelnen Elementen wird nicht deniert. Die Pro-
grammierung kann erst einsetzen, nachdem die Ana-
lyse vollständig abgeschlossen wurde.
Der Vorteil besteht darin, dass man zu jedem Zeit-
punkt einen vollständigen Überblick besitzt, ohne von
Detailfragen abgelenkt zu werden. Dem stehen aller-
dings einige Nachteile gegenüber wie insbesondere
die zumeist geringe Flexibilität. Denn wenn sich im
Laufe der Entwicklung die Problemstellung aus wel-
chem Grund auch immer ändert, ist man gezwungen,
die Top-Down-Analyse erneut durchzuführen, da sich
die Beziehung der Elemente untereinander, u. U. auch
die Elemente selbst nun geändert haben. Das Gesamt-
gefüge der ursprünglichen Analyse stimmt nicht mehr
mit der aktuellen Situation überein.

Der Bottom-Up-Ansatz dreht den analytischen
Prozess um und beginnt am Boden der Pyramide. Er
greift sich ein Element (z. B. Objekt, Klasse, Methode
etc.) heraus und analysiert alle notwendigen Details
möglichst unabhängig von der Frage, wie sich die-
ses eine Element in den Gesamtzusammenhang fügt.
Dann folgt die Analyse des nächsten Elements. Dies
geschieht solange, bis sich aus den einzelnen Ele-
menten der Gesamtzusammenhang erschließen lässt.
Ist ein Element ausreichend deniert, kann man zu-

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×