95
Nick Weschkalnies, Sven Gasser Adobe Flash CS5 Das umfassende Handbuch

Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Nick Weschkalnies, Sven Gasser

Adobe Flash CS5

Das umfassende Handbuch

Page 2: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Auf einen Blick | 3

AU

F E

INE

N B

LIC

K

Vorwort ............................................................21

Teil I Grundlagen ......................................................27

1 Was ist Flash? .............................................292 Arbeitsumgebung ........................................45

Teil II Anwendung ......................................................67

3 Zeichnen .....................................................694 Symbole, Instanzen und die Bibliothek ......1275 Animation .................................................1496 Text ..........................................................2437 Veröffentlichung .......................................285

Teil III ActionScript ...................................................325

8 ActionScript-Grundlagen ...........................3279 Animation mit ActionScript .......................39710 Einführung in die objekt orientierte Programmierung .......................................44511 Zeichnungs-API .........................................47912 Komponenten ...........................................497

Teil IV Multimedia und dynamische Inhalte ............517

13 Bitmaps ....................................................51914 Sound .......................................................54515 Video ........................................................58116 Dynamischer Text ......................................61517 Flash, PHP und MySQL .............................66718 XML..........................................................72719 FileReference ............................................757

Teil V Weitere Einsatzgebiete .................................783

20 Spieleprogrammierung ..............................78521 Ein Blick über den Tellerrand .....................833

Teil VI Anhang ...........................................................851

A FAQ ..........................................................853B Key-Codes der Key-Klasse .........................865C Unicode (Lateinisch einfach) .....................869D URL-Kodierung .........................................873E Die DVD zum Buch ...................................875

Auf einen Blick

Page 3: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

4  | Inhalt

Vorwort ................................................................................. 21

Teil I Grundlagen

1 Was ist Flash? .......................................................... 291.1 Flash-Historie ............................................................. 291.2 Entwicklungsumgebung, Player und Projektor ............ 291.3 Vektoren und Pixel ..................................................... 311.4 Anwendungsbereiche ................................................. 321.5 Neues in Flash CS5 ..................................................... 37

2 Arbeitsumgebung ..................................................... 452.1 Begrüßungsbildschirm ................................................ 452.2 Die Entwicklungsumgebung ....................................... 462.3 Die Menüleiste ........................................................... 472.4 Die Werkzeugleiste..................................................... 512.5 Die Zeitleiste .............................................................. 542.6 Die Bühne .................................................................. 552.7 Entwicklungsumgebung anpassen ............................... 572.8 Tastaturkurzbefehle .................................................... 63

Teil II Anwendung

3 Zeichnen ................................................................... 693.1 Zeichenmodi .............................................................. 693.2 Zeichenwerkzeuge ...................................................... 70

3.2.1 Strich- und Füllfarbe ....................................... 703.2.2 Farbpalette bearbeiten ................................... 723.2.3 Kuler-Bedienfeld ............................................ 733.2.4 Linienwerkzeug .............................................. 743.2.5 Eigenschaften ändern ..................................... 753.2.6 Stricheigenschaften ........................................ 753.2.7 Freihandwerkzeug .......................................... 783.2.8 Pinsel-Werkzeug ............................................. 793.2.9 Sprühen-Werkzeug ......................................... 813.2.10 Deko-Werkzeug ............................................. 833.2.11 Radiergummiwerkzeug ................................... 933.2.12 Rechteckwerkzeug.......................................... 953.2.13 Werkzeug für Rechteckgrundform .................. 96

Inhalt

Page 4: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Inhalt | 5

INH

ALT

3.2.14 Ellipsenwerkzeug ............................................ 973.2.15 Werkzeug für Ellipsengrundform .................... 983.2.16 Polysternwerkzeug ......................................... 993.2.17 Stiftwerkzeug ............................................... 100

3.3 Objekte auswählen und bearbeiten .......................... 1023.3.1 Auswahlwerkzeug ........................................ 1023.3.2 Unterauswahl-Werkzeug .............................. 1033.3.3 Lassowerkzeug ............................................. 104

3.4 Transformationen ..................................................... 1073.4.1 Frei-transformieren-Werkzeug ...................... 1083.4.2 3D-Drehungswerkzeug ................................. 1093.4.3 3D-Versetzungswerkzeug .............................. 1103.4.4 Fluchtpunkt und Perspektive ........................ 111

3.5 Farben und Farbverläufe erstellen ............................. 1133.5.1 Tintenfass- und Farbeimerwerkzeug .............. 1133.5.2 Pipette ......................................................... 1143.5.3 Farbverläufe ................................................. 1153.5.4 Bitmap-Füllung ............................................ 1163.5.5 Farbverlaufwerkzeug .................................... 117

3.6 Hilfswerkzeuge ......................................................... 1183.6.1 Skalierung mit dem 9-teiligen Segmentraster ...1183.6.2 Objekte gruppieren und anordnen ............... 1203.6.3 Handwerkzeug ............................................. 1213.6.4 Zoomwerkzeug ............................................ 1223.6.5 Lineale ......................................................... 1223.6.6 Hilfslinien ..................................................... 1233.6.7 Raster........................................................... 125

4 Symbole, Instanzen und die Bibliothek .................. 1274.1 Symbole ................................................................... 1274.2 Symbole erstellen ..................................................... 1284.3 Symbolinstanzen ...................................................... 1304.4 Schaltflächen ............................................................ 1364.5 Bibliothek ................................................................. 141

4.5.1 Bibliothekselemente löschen ........................ 1424.5.2 Ordnung und Struktur in der Bibliothek ........ 142

4.6 Gemeinsam genutzte Bibliothek (Shared Library) ...... 144

5 Animation ............................................................... 1495.1 Zeitleiste .................................................................. 149

5.1.1 Ebenenmodell .............................................. 1505.1.2 Mit Ebenen arbeiten..................................... 1505.1.3 Bilder und Schlüsselbilder auf der Zeitleiste ...1555.1.4 Darstellungsoptionen der Zeitleiste ............... 157

Page 5: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

6  | Inhalt

5.1.5 Szenen und Bildbezeichner ........................... 1585.2 Bild-für-Bild-Animation ............................................ 1605.3 Zwiebelschaleneffekt ................................................ 1705.4 Tweens ..................................................................... 172

5.4.1 Bewegungs-Tween erstellen .......................... 1725.4.2 Eigenschaften animieren ............................... 1735.4.3 Pfad eines Bewegungs-Tween ....................... 1785.4.4 Bewegungs-Editor ........................................ 1845.4.5 Bewegungsvoreinstellungen ......................... 1955.4.6 Animation kopieren und einfügen ................ 196

5.5 Klassische Tweens ..................................................... 1975.5.1 Klassische Tweens an Pfad ausrichten ........... 1985.5.2 Timing .......................................................... 202

5.6 Weitere Eigenschaften animieren .............................. 2095.7 Form-Tweens ............................................................ 212

5.7.1 Bitmaps in Vektoren umwandeln .................. 2125.7.2 Formmarken einsetzen ................................. 216

5.8 Masken .................................................................... 2185.9 Verschachtelung ....................................................... 2245.10 Inverse Kinematik ..................................................... 230

5.10.1 Bone-Werkzeug ............................................ 2315.10.2 Bindungswerkzeug ....................................... 2405.10.3 Steuerungspunkte ausrichten ........................ 242

6 Text ......................................................................... 2436.1 Klassische Texterstellung in Flash .............................. 243

6.1.1 Textbreite anpassen ...................................... 2446.1.2 Text transformieren ...................................... 245

6.2 Textfeld-Eigenschaften .............................................. 2466.2.1 Textfeld-Typen .............................................. 2466.2.2 Text formatieren ........................................... 2476.2.3 Schriftart, -größe und -farbe ......................... 2486.2.4 Auszeichnungen ........................................... 2496.2.5 Ausrichtung .................................................. 2516.2.6 Zeilenabstand, Zeilenlänge, Zeichenabstand ...2526.2.7 Textrichtung ................................................. 2546.2.8 Text mit URL verknüpfen .............................. 2546.2.9 Auswählbarer Text ........................................ 256

6.3 Darstellung von Schrift ............................................. 2566.3.1 Geräteschriftarten ........................................ 2586.3.2 Maskierung von Geräteschriftarten ............... 2596.3.3 Eingebettete Schriften .................................. 2636.3.4 Bitmap-Text .................................................. 2646.3.5 Text als Grafik einfügen................................. 265

Page 6: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Inhalt | 7

INH

ALT

6.3.6 Pixelfonts ..................................................... 2666.3.7 Fehlende Schriften ersetzen .......................... 269

6.4 Schreibregeln ........................................................... 2706.5 TLF-Texterstellung in Flash ........................................ 273

6.5.1 TLF-Textfeld-Eigenschaften ........................... 2746.5.2 TLF-Textfeld formatieren ............................... 2756.5.3 TLF-Textfeld-Eigenschaften »Erweitert – Zeichen« ................................... 2756.5.4 TLF-Textfeld-Eigenschaften »Absatz« ............. 2796.5.5 TLF-Textfeld-Eigenschaften »Container und Fluss« .................................. 280

7 Veröffentlichung ..................................................... 2857.1 Veröffentlichungseinstellungen ................................. 285

7.1.1 Flash-Export (SWF) ..................................... 2867.1.2 HTML-Export ............................................... 2937.1.3 GIF-Export ................................................... 2977.1.4 JPEG-Export ................................................. 2997.1.5 PNG-Export ................................................. 300

7.2 Einbettung mit dem SWFObject ............................... 3017.2.1 Express Install ............................................... 3037.2.2 FlashVars ...................................................... 3057.2.3 Parameter .................................................... 309

7.3 Ladeverhalten von Flash-Filmen ............................... 3137.4 Positionierung per CSS ............................................. 315

7.4.1 CSS erstellen ................................................ 3167.4.2 Flash-Film mittig positionieren ..................... 3167.4.3 Flash-Film am oberen und unteren Rand mittig positionieren ...................................... 318

7.5 Export ...................................................................... 3207.6 Eingabehilfen ........................................................... 321

7.6.1 Fenster »Eingabehilfen« ................................ 3217.6.2 Eingabehilfe für Symbole .............................. 322

7.7 FLA-Datei als XFL-Datei speichern ............................ 3227.7.1 Speichern als XFL-Dokument ........................ 3237.7.2 Aktualisieren von Grafikmaterial ................... 323

Teil III ActionScript

8 ActionScript-Grundlagen ........................................ 3278.1 ActionScript-Versionen ............................................. 3278.2 ActionScript-Editor ................................................... 329

8.2.2 Skripthilfe und Experten-Modus ................... 330

Page 7: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

8  | Inhalt

8.2.3 Codefragmente ............................................ 3318.2.4 Funktionen des ActionScript-Editors ............. 332

8.3 Mein erstes Skript .................................................... 3358.4 Variablen .................................................................. 3368.5 Datentypen .............................................................. 338

8.5.1 Strikte Typisierung und lose Typisierung ........ 3398.5.2 Datentypen umwandeln ............................... 3408.5.3 Geltungsbereich ........................................... 342

8.6 Arrays ....................................................................... 3438.6.1 Indizierte Arrays ........................................... 3438.6.2 Assoziative Arrays ......................................... 3448.6.3 Mehrdimensionale Arrays ............................. 3458.6.4 Arrays sortieren ............................................ 3458.6.5 Typisiertes Array: Vector ............................... 347

8.7 Einfache Operatoren ................................................ 3488.7.1 Arithmetische Operatoren ............................ 3488.7.2 Vergleichsoperatoren und Fallunterscheidung ....................................... 3498.7.3 Logische Operatoren .................................... 352

8.8 Bitweise Operatoren ................................................. 3538.9 Schleifen .................................................................. 355

8.9.1 while-Schleife ............................................... 3568.9.2 do-while-Schleife ......................................... 3588.9.3 for-Schleife ................................................... 3588.9.4 for-in-Schleife............................................... 3598.9.5 for-each-in-Schleife ...................................... 360

8.10 Funktionen ............................................................... 3608.11 Steuerung von Zeitleisten ......................................... 3648.12 Anzeigeliste .............................................................. 366

8.12.1 Anzeigeklassen ............................................. 3668.12.2 Anzeigeobjekte referenzieren ....................... 3698.12.3 Anzeigeobjekte hinzufügen und entfernen .... 3708.12.4 Anzeigeobjekte aus dem Speicher entfernen ...3728.12.5 Reihenfolge in der Anzeigeliste ändern ......... 3738.12.6 Struktur einer Anzeigeliste ............................ 3738.12.7 Instanzen aus der Bibliothek erzeugen .......... 374

8.13 Ereignisse ................................................................. 3768.13.1 Ereignisse, Ereignis-Listener und Ereignisprozeduren ....................................... 3768.13.2 target und currentTarget ............................... 3778.13.3 Ereignis-Listener entfernen ........................... 3788.13.4 Häufig verwendete Ereignisse mit Anzeigeobjekten .......................................... 380

8.14 Loader...................................................................... 382

Page 8: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Inhalt | 9

INH

ALT

8.15 Fehlersuche .............................................................. 3898.15.1 Anwendung ................................................. 3898.15.2 Haltepunkte ................................................. 3908.15.3 Debug-Konsole ............................................ 3908.15.4 Remote-Debug............................................. 3918.15.5 Häufige Fehlerursachen ................................ 394

9 Animation mit ActionScript .................................... 3979.1 Eigenschaften von Anzeigeobjekten .......................... 3979.2 Ereignisse ................................................................. 398

9.2.1 ENTER_FRAME ............................................ 3989.2.2 MOUSE_MOVE ............................................ 401

9.3 Timer ....................................................................... 4039.4 Geschwindigkeit und Beschleunigung ....................... 4049.5 Easing ...................................................................... 406

9.5.1 Bewegung .................................................... 4069.5.2 Weitere Instanzeigenschaften animieren ....... 4089.5.3 Animation beenden oder loopen .................. 409

9.6 Trigonometrie ........................................................... 4129.6.1 Koordinatensystem ....................................... 4129.6.2 Winkelangabe .............................................. 4139.6.3 Grad- und Bogenmaß – Umrechnung ............ 4139.6.4 Das rechtwinklige Dreieck ............................ 4149.6.5 Schwingende Bewegung ............................... 4159.6.6 Kreisbewegung ............................................. 4229.6.7 Winkel zwischen zwei Punkten berechnen .... 424

9.7 Tween-Engines ......................................................... 4289.7.1 Adobes Tween-Klasse ................................... 4299.7.2 Tween-Engines ............................................. 4299.7.3 TweenLite .................................................... 4309.7.4 TweenLite-Plugins ........................................ 438

10 Einführung in die objekt orientierte Programmierung ..................................................... 445

10.1 Die Welt der Objekte ............................................... 44710.2 Klassen und Objekte ................................................ 448

10.2.1 Klassenbezeichner und Dateiname ............... 44810.2.2 Klassendefinition und Konstruktor ................ 44910.2.3 Objekt initialisieren ...................................... 450

10.3 Eigenschaften ........................................................... 45110.4 Methoden ................................................................ 45210.5 Paket- und Klassenpfad ............................................ 453

10.5.1 Pakete und Klassen importieren .................... 45410.5.2 Eigene Pakete und Klassenpfade ................... 456

Page 9: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

10  | Inhalt

10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten ............................. 457

10.6 Sichtbarkeit .............................................................. 46010.7 Instanz- und Klassenmitglieder ................................. 46210.8 Dokumentklasse ....................................................... 46410.9 Symbole als Klasse .................................................... 46710.10 Getter-/Setter-Methoden ......................................... 472

10.10.1 Getter-Methode .......................................... 47210.10.2 Setter-Methode ........................................... 473

10.11 Vererbung ................................................................ 47410.11.1 Methoden und Eigenschaften der Superklasse ansteuern ................................. 47710.11.2 Methoden und Eigenschaften einer Basisklasse überschreiben ............................ 477

11 Zeichnungs-API ...................................................... 47911.1 Graphics-Klasse ........................................................ 47911.2 Anzeigeobjekt erstellen ............................................ 479

11.2.1 Linien zeichnen ............................................ 48011.2.2 Bitmap-Linien zeichnen ................................ 48511.2.3 Kurven zeichnen .......................................... 48511.2.4 Füllungen erzeugen ...................................... 48711.2.5 Rechteck zeichnen ....................................... 48811.2.6 Rechteck mit abgerundeten Ecken zeichnen ...49311.2.7 Kreis zeichnen .............................................. 49411.2.8 Ellipse zeichnen ............................................ 49411.2.9 Farbverlaufslinien und -füllungen erzeugen ... 494

12 Komponenten ......................................................... 49712.1 Einführung ............................................................... 49712.2 Anwendung ............................................................. 498

12.2.1 Komponenten in der Entwicklungs - umgebung .................................................... 49812.2.2 Komponenten mit ActionScript erzeugen ..... 50012.2.3 Komponenten über ActionScript ansteuern ...50112.2.4 Eigenschaften ............................................... 50212.2.5 Methoden .................................................... 50212.2.6 Ereignisse ..................................................... 503

12.3 Erscheinungsbild anpassen ....................................... 51012.4 Stile ......................................................................... 511

12.4.1 Komponenteninstanzen anpassen ................. 51112.4.2 Komponententyp anpassen .......................... 511

12.5 Skins ........................................................................ 512

Page 10: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Inhalt | 11

INH

ALT

12.5.1 Skin eines Komponententyps anpassen ......... 51312.5.2 Skin einer Komponenteninstanz anpassen .... 514

Teil IV Multimedia und dynamische Inhalte

13 Bitmaps ................................................................... 51913.1 Bitmap-Import ......................................................... 51913.2 Photoshop-Import .................................................... 522

13.2.1 Bildebenen ................................................... 52313.2.2 Textebenen .................................................. 524

13.3 Illustrator-Import ...................................................... 52513.3.1 Bildebenen ................................................... 52713.3.2 Textebenen .................................................. 52713.3.3 Pfade ........................................................... 528

13.4 FXG ......................................................................... 52813.5 Mischmodi und Filter ............................................... 529

13.5.1 Bitmap-Filter anwenden ............................... 53113.5.2 Bitmap-Filter animieren ................................ 532

13.6 Mischmodi und Bitmap-Filter mit ActionScript ......... 53313.6.1 Mischmodi ................................................... 53313.6.2 Bitmap-Filter ................................................ 533

13.7 Bitmaps mit ActionScript .......................................... 53613.7.1 Bitmap-Klasse .............................................. 53613.7.2 BitmapData-Klasse ....................................... 53713.7.3 Pixel einer Bitmap auslesen und setzen ......... 538

14 Sound ...................................................................... 54514.1 Hintergrundwissen ................................................... 54514.2 Import und Veröffentlichung .................................... 547

14.2.1 Veröffentlichungseinstellungen ..................... 54714.2.2 Tipps für den Import .................................... 550

14.3 Sound in der Zeitleiste .............................................. 55114.3.1 Soundtypen.................................................. 55114.3.2 Soundeffekte ................................................ 554

14.4 Sounds mit ActionScript ........................................... 55714.4.1 Sound-Klasse................................................ 55814.4.2 Sound laden ................................................. 55914.4.3 Sound abspielen ........................................... 56114.4.4 Sound-Streaming steuern ............................. 56214.4.5 Sound pausieren........................................... 56614.4.6 Soundlautstärke ........................................... 568

14.5 Soundspektrum ........................................................ 575

Page 11: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

12  | Inhalt

15 Video ....................................................................... 58115.1 Techniken zur Bereitstellung ..................................... 58115.2 Adobe Media Encoder .............................................. 583

15.2.1 Video-Format ............................................... 58315.2.2 Kodierung .................................................... 58515.2.3 Exporteinstellungen ...................................... 586

15.3 Video-Import in Flash ............................................... 59215.3.1 Video-Playback-Komponente ....................... 59315.3.2 FLV in Zeitleiste integrieren und abspielen .... 594

15.4 Video-Anwendung ................................................... 59515.4.1 Eingebettete Videos ..................................... 59515.4.2 Externe Videos ............................................. 59715.4.3 Vollbild-Modus ............................................ 60115.4.4 Audio-Spur eines Videos steuern .................. 60215.4.5 Eigenschaften der NetStream-Klasse ............. 60315.4.6 Cue-Points ................................................... 605

16 Dynamischer Text ................................................... 61516.1 Klassischer Text oder TLF-Text? ................................. 61516.2 Dynamische Textfelder und Eingabetextfelder ........... 617

16.2.1 Textfeld-Einstellungen .................................. 61816.2.2 Zeicheneinbettung ....................................... 620

16.3 Text zuweisen und abfragen ...................................... 62216.3.1 Tabulator-Reihenfolge .................................. 62816.3.2 Eingabefokus ................................................ 629

16.4 Textdokument laden und ausgeben .......................... 63116.4.1 Zeichenkodierung ......................................... 63116.4.2 Textdokumente laden ................................... 632

16.5 Textfelder mit ActionScript steuern ........................... 63716.5.1 Textfeld-Eigenschaften .................................. 63716.5.2 TextFormat ................................................... 64016.5.3 Schriftart-Symbol und Schriftart-Klasse ......... 64216.5.4 Textfeld-Methoden ....................................... 645

16.6 Textscroller – die UIScrollBarKomponente ................. 64616.6.1 Textbereich definieren .................................. 64716.6.2 Bildlauf aktivieren ......................................... 64716.6.3 UIScrollBar-Komponente einfügen ................ 64816.6.4 Ziel der Scroller-Komponente festlegen ........ 648

16.7 Text Layout Framework ............................................ 64916.7.1 Text Layout Framework und MVC Design Pattern ......................................................... 64916.7.2 Hierarchische Struktur .................................. 65016.7.3 TextLayoutFormat......................................... 65116.7.4 ParagraphElement ........................................ 655

Page 12: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Inhalt | 13

INH

ALT

16.7.5 SpanElement ................................................ 65616.7.6 Text-Container ............................................. 65616.7.7 Mehrspaltiger Text ........................................ 657

16.8 Reguläre Ausdrücke .................................................. 66116.8.1 RegExp-Klasse .............................................. 66116.8.2 Methoden der RegExp-Klasse ....................... 66116.8.3 Text ersetzen ................................................ 66216.8.4 Beispiele ...................................................... 663

17 Flash, PHP und MySQL .......................................... 66717.1 PHP .......................................................................... 667

17.1.1 Voraussetzungen .......................................... 66817.1.2 Lokaler Webserver........................................ 66917.1.3 Sprachelemente und Syntax.......................... 67217.1.4 Datums- und Zeitfunktion ............................ 67517.1.5 Daten in Flash empfangen ............................ 67717.1.6 Daten von Flash an PHP senden und wieder empfangen ....................................... 68417.1.7 Ein Kontaktformular erstellen ....................... 68917.1.8 Sicherheit ..................................................... 69717.1.9 PHP-Skripte testen und Fehlermeldungen ..... 700

17.2 MySQL ..................................................................... 70117.2.1 phpMyAdmin ............................................... 70317.2.2 Datenbank erstellen ..................................... 70317.2.3 Datenbanktabelle erstellen ........................... 70417.2.4 Tabellenspalten definieren ............................ 70417.2.5 Datentypen .................................................. 70517.2.6 Felder bearbeiten, löschen und hinzufügen ... 70617.2.7 Datensätze einfügen ..................................... 70717.2.8 Tabellen exportieren ..................................... 70817.2.9 Tabellen importieren .................................... 710

17.3 PHP und MySQL im Team ........................................ 71017.3.1 Datenbank-Login.......................................... 71017.3.2 Datenbankverbindung herstellen .................. 71117.3.3 Daten an Flash übergeben ............................ 71317.3.4 Datenbanksätze einfügen ............................. 72017.3.5 Sicherheit ..................................................... 72317.3.6 Datensätze aktualisieren ............................... 726

18 XML ........................................................................ 72718.1 XML definieren ......................................................... 72718.2 XML-Dokument laden .............................................. 729

18.2.1 Wohlgeformtheit .......................................... 73018.2.2 Kommentare ................................................ 731

Page 13: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

14  | Inhalt

18.2.3 Anzahl von Elementen .................................. 73118.2.4 Daten filtern ................................................. 732

18.3 Formatierungen in XML ............................................ 73818.4 XML bearbeiten........................................................ 741

18.4.1 Elementwerte ändern ................................... 74118.4.2 Elemente hinzufügen .................................... 74118.4.3 Elemente entfernen ...................................... 743

18.5 XML sortieren .......................................................... 74518.5.1 XML nach Knoten sortieren .......................... 74518.5.2 XML nach Attribut sortieren ......................... 747

18.6 XML speichern ......................................................... 748

19 FileReference .......................................................... 75719.1 Öffnen und Speichern .............................................. 75719.2 Download ................................................................ 76119.3 Upload ..................................................................... 765

19.3.1 Methoden .................................................... 76719.3.2 Ereignis-Listener ........................................... 76819.3.3 Eigenschaften ............................................... 77019.3.4 Dateiendungen überprüfen .......................... 77119.3.5 Upload – FAQ .............................................. 777

Teil V Weitere Einsatzgebiete

20 Spieleprogrammierung ........................................... 78520.1 Interaktion ............................................................... 785

20.1.1 Tastatursteuerung ......................................... 78520.1.2 Maussteuerung............................................. 787

20.2 Kollisionserkennung ................................................. 78920.2.1 Einfache Kollisionserkennung mit hitTestObject und hitTestPoint ...................... 78920.2.2 Pixelbasierte Kollisionserkennung ................. 79220.2.3 Positionsbasierte Kollisionserkennung ........... 796

20.3 Zeit .......................................................................... 79920.4 Daten lokal speichern mit einem SharedObject ......... 80120.5 Asteroids-Spiel ......................................................... 804

20.5.1 Startbildschirm ............................................. 80520.5.2 Soundobjekte initialisieren ........................... 80620.5.3 Spielvariablen initialisieren ........................... 80620.5.4 Raumschiffsteuerung .................................... 80720.5.5 Feuer frei ..................................................... 80820.5.6 Asteroiden erzeugen ..................................... 810

Page 14: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Inhalt | 15

INH

ALT

20.5.7 Bewegung und Kollisionserkennung der Asteroiden ............................................. 81320.5.8 Schwierigkeitsgrad erhöhen ......................... 81420.5.9 Schussenergie aufladen ................................ 81420.5.10 Lebenspunkte erzeugen ............................... 81420.5.11 SlowMotion-Punkte erzeugen ...................... 81620.5.12 Spiel beenden ............................................. 817

20.6 Verbesserungen ........................................................ 81920.7 Highscore ................................................................. 819

20.7.1 Highscore laden ........................................... 82020.7.2 Highscore aktualisieren und speichern .......... 82120.7.3 Highscore darstellen ..................................... 82420.7.4 Spiel neu starten .......................................... 825

20.8 Highscore-Sicherheit ................................................ 82620.8.1 Hashfunktion verwenden ............................. 82720.8.2 Zeitpunkte in einem Array speichern ............ 82720.8.3 Hashwerte erzeugen ..................................... 82820.8.4 Analyse der Verschleierungstechnik .............. 831

21 Ein Blick über den Tellerrand .................................. 83321.1 Adobe AIR ............................................................... 833

21.1.1 Programmierung mit AIR .............................. 83421.1.2 2.0-Update .................................................. 834

21.2 Adobe Flex ............................................................... 83521.3 Adobe Flash Catalyst ................................................ 83721.4 Mobile Endgeräte ..................................................... 839

21.4.1 Adobe Flash Lite .......................................... 84021.4.2 Adobe Device Central CS5 ........................... 841

21.5 Third-Party-Tools ...................................................... 84221.5.1 ActionScript-Entwicklungsumgebungen ........ 84221.5.2 Bildschirmschoner ........................................ 84721.5.3 Native Desktop-Anwendungen ..................... 84821.5.4 3D-Animationen .......................................... 849

Teil VI Anhang

A FAQ ......................................................................... 853B Key-Codes der Key-Klasse ........................................ 865C Unicode (Lateinisch einfach) ..................................... 869D URL-Kodierung ......................................................... 873E Die DVD zum Buch .................................................. 875

Index ................................................................................ 877

Page 15: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

16  | Video-Lektionen

Bonuskapitel

Auf der Buch-DVD finden Sie ein Bonuskapitel mit einer nütz-lichen Referenz der wichtigsten auf ActionScript 3 basierenden UI-Komponenten.

Video-Lektionen

Als Ergänzung zum Buch möchten wir Ihnen auf der beiliegenden DVD Lehrfilme zur 3D-Animation aus unserem Video-Training »Adobe Flash CS5« von Helge Maus (ISBN 978-3-8362-1572-5) zeigen.

Mit Flash im 3D-Raum [01:18 Std.]EE Einleitung [00:27 Min.]EE Objekte in 3D bewegen [09:30 Min.]EE 3D-Szenen animieren [14:18 Min.]EE Bones & Inverse Kinematik [11:22 Min.]EE Posen und Gelenke nutzen [09:36 Min.]EE Animationstypen in 3D [03:15 Min.]EE Animationen übertragen [05:33 Min.]EE Bones federn und dämpfen [04:28 Min.]EE Einen Charakter animieren [10:40 Min.]EE Das Bindungswerkzeug [09:15 Min.]

VID

EO

-LE

KT

ION

EN

Page 16: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

WO

RK

SH

OP

S

Workshops | 17

WO

RK

SH

OP

S

Workshops

Arbeitsumgebung

EE Eigene Tastenkürzel definieren ........................................... 65

Zeichnen

EE Farben einer umgewandelten Bitmap-Grafik austauschen ...105

Symbole, Instanzen und die Bibliothek

EE Instanzeigenschaften ändern ............................................ 131EE Eine Schaltfläche erstellen ................................................ 137

Animation

EE Die Animation anlegen .................................................... 162EE Animation in MovieClip verschachteln ............................. 166EE Geschwindigkeit ändern .................................................. 168EE Ein Bewegungs-Tweening erstellen ................................... 175EE Eine Animation entlang eines Pfades erstellen .................. 180EE Den Bewegungs-Editor einsetzen ..................................... 188EE Beschleunigung im Bewegungs-Editor nutzen .................. 192EE Klassisches Tween an Pfad ausrichten ............................... 199EE Klassisches Tween mit Beschleunigung und Abbremsung ... 203EE Ein fahrendes Motorrad mit einem beschleunigten

klassischen Tween ............................................................ 206EE Ein springender Ball mit beschleunigtem klassischem

Tween ............................................................................. 208EE Bitmap in Vektoren umwandeln ....................................... 213EE Formmarken für einen Form-Tween einsetzen ................. 216EE Verlaufsmaske erstellen .................................................... 220EE Verschachtelung in einer Galerie mit Maskeneffekt .......... 224EE Charakteranimation mit inverser Kinematik ...................... 235

Text

EE Maskierung von Geräteschriften ....................................... 260EE Textfelder miteinander verbinden ..................................... 282

Veröffentlichung

EE FlashVars einsetzen .......................................................... 307EE Flash-Film mittig im Browser zentrieren ........................... 316

Page 17: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

18  | Workshops

ActionScript-Grundlagen

EE Navigation mit externen Flash-Filmen .............................. 384EE Remote-Debugging mit dem »De MonsterDebugger« ...... 392

Animation mit ActionScript

EE Animation mit Event.ENTER_FRAME-Ereignis .................. 400EE Animation mit MouseEvent.MOUSE_MOVE-Ereignis ....... 402EE Bewegung mit Easing ....................................................... 407EE FadeOut mit Easing ......................................................... 408EE Animation beenden ......................................................... 410EE Fading-Animation loopen ................................................ 411EE Schwingende Bewegung auf der x-Achse ......................... 415EE Schwingende Bewegung auf der y-Achse ......................... 417EE 3D-Bewegung und Tiefenänderung .................................. 419EE Kreis- und ellipsenförmige Bewegung .............................. 422EE Spiralenförmige Bewegung ............................................... 423EE MovieClip in Mausrichtung drehen .................................. 424EE MovieClip in Mausrichtung bewegen ............................... 425EE 3D-Flip mit TweenLite ..................................................... 435EE Schneeflockensimulation mit TweenLite ........................... 442

Einführung in die objekt orientierte Programmierung

EE Klasse und Objekt erstellen .............................................. 450EE Eine analoge Uhr erstellen ............................................... 468

Zeichnungs-API

EE Interaktive Linie zeichnen ................................................ 482EE Interaktive Kurve zeichnen ............................................... 486EE Interaktives Zeichnen von Rechtecken ............................. 488

Komponenten

EE Gallery mit Slideshow-Funktion mithilfe von Komponenten ........................................................... 503

Bitmaps

EE Bitmap-Filter mit ActionScript steuern ............................. 534EE Farbwerte einer Bitmap auslesen...................................... 548EE Kreispunkt-Muster mit setPixel erzeugen ......................... 541

Sound

EE Eine Schaltfläche mit Sounds versehen ............................. 552EE Einen Streaming-Sound ein- und ausblenden ................... 555

Page 18: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

WO

RK

SH

OP

S

Workshops | 19

WO

RK

SH

OP

S

EE Mehrere Sounds zuweisen, abspielen und stoppen .......... 564EE Sound pausieren und abspielen ........................................ 566EE Soundlautstärke über einen Slider steuern ....................... 569EE Das Soundspektrum eines abspielenden Sounds

auslesen und grafisch darstellen ....................................... 576

Video

EE Ein eingebettetes Video über die Zeit leiste steuern .......... 595EE Ein Video über ActionScript abspielen und steuern .......... 599EE Ereignis-Cue-Points einsetzen .......................................... 607EE Navigation-Cue-Points einsetzen...................................... 611

Dynamischer Text

EE Texteingabe abfragen und ausgeben ................................. 626EE FocusEvent.FOCUS_IN und FocusEvent.FOCUS_OUT

zur Hervorhebung von Eingabetextfeldern nutzen ............ 629EE Textdokument laden und ausgeben .................................. 635EE Mehrspaltigen Text über ActionScript mithilfe des

Text Layout Frameworks erzeugen ................................... 658

Flash, PHP und MySQL

EE Serverseitiges Datum und Zeit in Flash ausgeben.............. 682EE Kontaktformular – Eingabe überprüfen und zurücksetzen ...690EE Kontaktformular – Kontaktdaten an ein PHP-Skript

senden ............................................................................ 693EE Kontaktformular – PHP-Skript für den Mailversand

erstellen .......................................................................... 696EE Kontaktformular – PHP-Skript mit Sicherheitsfunktionen

versehen .......................................................................... 699EE Gästebuch – Datensätze auslesen und in Flash darstellen ... 715EE Gästebuch – Daten von Flash an PHP übergeben und

Datensätze erstellen ......................................................... 720EE Gästebuch – SQL-Injections verhindern............................ 725

XML

EE RSS-Feed einlesen und Daten des Feeds in Flash darstellen ......................................................................... 734

EE RSS-Feed serverseitig einlesen und an den Flash-Film übergeben ....................................................................... 737

EE HTML-Formatierungen in XML-Knoten integrieren ........... 739EE XML-Dokument laden, ändern und mittels eines

serverseitigen Skripts wieder speichern ............................ 748

Page 19: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20  | Workshops

FileReference

EE Ein Textdokument in den Flash Player laden und ausgeben ......................................................................... 758

EE Daten lokal abspeichern................................................... 760EE Download via FileReference-Klasse mit

Fortschrittsbalken ............................................................ 763EE Die Upload-Methode nutzen und Dateien clientseitig

auf ihre Dateiendungen hin überprüfen ........................... 771EE Den Fortschritt des Upload-Vorgangs anzeigen ................ 774EE Upload: Dateiendung serverseitig

überprüfen ...................................................................... 776

Spieleprogrammierung

EE Kollisionserkennung mit Randbereichen und Bouncing ..... 799EE Spielername lokal speichern und lesen ............................. 803

Page 20: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Vorwort | 21

VO

RW

OR

T

Vorwort

Liebe Leserinnen und Leser,ich (bzw. wir – dazu gleich mehr) freue mich darüber, dass ich Ihnen mein drittes Buch, das umfassende Handbuch und Nach-schlagewerk zu Flash CS5, vorstellen darf.

Das Beste vorweg: Adobe hat es offensichtlich verstanden, berechtigte Kritik von Endanwendern zu berücksichtigen und hat auf vordergründig spektakuläre Neuerungen bei Flash CS5 wis-sentlich verzichtet. Flash CS5 ist eine solide und stabile Entwick-lungsumgebung mit vielen kleinen Verbesserungen gegenüber der Vorgängerversion.

Auch ich als Autor bin inzwischen nicht ganz untätig gewe-sen und freue mich darüber, meinen Co-Autor Sven Gasser mit diesem Werk vorstellen zu dürfen. Gemeinsam hoffen wir, den gefühlt immer kürzer werdenden Intervallen von neuen Flash-Versionen gerecht zu werden, und arbeiten daran, die Qualität dieses Handbuchs noch weiter zu verbessern.

Was dieses Buch aus unserer Perspektive von anderen Büchern eindeutig unterscheidet, ist, dass es Ihnen einen unverwechsel-baren umfassenden, praktisch orientierten Überblick über sehr viele unterschiedliche Themenbereiche bietet.

Neben den theoretischen Erläuterungen zu zahlreichen The-men finden Sie darin konkrete praxisnahe Beispiele in großer Zahl. Diese Beispiele zeigen Ihnen jeweils eine praktische Anwen-dung der zuvor genannten Erläuterungen und sollten Sie dazu ermutigen, Themengebiete näher zu erforschen, um dann darauf aufbauend professionelle Projekte auf Flash-Basis in Eigenregie umzusetzen.

Warum kann dieses Buch wertvoll für Sie sein?Das Buch bietet Ihnen neben Grundlagen und Erläuterungen zu Flash CS5 und Basiswissen zum Umgang mit Flash einen sehr guten Gesamtüberblick über die vielen Einsatzmöglichkeiten von Flash. Darin inbegriffen sind viele Erläuterungen zu zahlreichen unterschiedlichen Themen. Dazu gehören u. a.:

Page 21: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

22  | Vorwort

EE AnimationenEE Text und Textgestaltung

(inklusive Einführung in das Text Layout Framework)EE ActionScript-GrundlagenEE Einführung in die objektorientierte ProgrammierungEE Zeichnen und Zeichnen mit ActionScriptEE KomponentenEE BitmapsEE SoundsEE VideosEE PHP, MySQL und die Zusammenarbeit mit FlashEE XMLEE FileReferenceEE SpieleentwicklungEE Flash auf mobilen Endgeräten

Dieses vielseitige Themenspektrum, die detaillierten Erläuterun-gen zu den jeweiligen Themen sowie passende Praxisbeispiele machen dieses Buch aus unserer Sicht zu einem besonders wert-vollen Handbuch und Nachschlagewerk.

ZielgruppeDas Buch richtet sich an eine breite Zielgruppe: Zur Zielgruppe gehören zunächst Anwender, die Flash zum ersten Mal einset-zen. Für sie bietet das Buch einen sehr guten Einstieg, um die vielen Möglichkeiten von Flash von Grund auf kennenzulernen. Gerade die ersten Kapitel mit Themen wie dem Umgang mit der Arbeitsumgebung, Grundlagen zur Zeitleiste, Bildern und Sym-bolen, Animationen etc. gehören zu den Grundlagen, um Flash nutzen und die darauf folgenden weiterführenden Themen nach-vollziehen zu können.

Für Flash-Nutzer, die bereits mit früheren Flash-Versionen und ActionScript 1 oder 2 gearbeitet haben, sowie solche, die Flash schon lange einsetzen, ihre Kenntnisse erweitern möchten und aktuelle Lösungen für den praktischen Einsatz suchen, bietet das Buch, das vollständig auf ActionScript 3 basiert, einen soliden Ein- oder Umstieg in ActionScript 3. Außerdem beinhaltet das Buch Kapitel zu konkreten Themenschwerpunkten wie Animatio-nen, Sound, Video, XML mit ActionScript 3, alles Wissenswertes zu Text und vieles mehr.

Unabhängig vom Kenntnisstand richtet sich das Buch glei-chermaßen an Designer und Programmierer, die sich mithilfe von Flash neue Felder erschließen oder ihren bisherigen Kenntnis-stand erweitern bzw. ergänzen möchten.

Page 22: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Vorwort | 23

WorkshopsDie Workshops zu den jeweiligen Themen wurden so gewählt, dass sie einerseits den Anspruch erfüllen, zu den zuvor ausführ-lich erläuterten Grundlagen praktische Beispiele zu zeigen, und andererseits direkt in der Praxis einsetzbar sind.

Dabei möchten wir Sie an dieser Stelle ausdrücklich dazu ermuntern, die gezeigten Beispiele als Basis für eigene Projekte zu nutzen und mithilfe der gewonnenen Grundlagenkenntnisse weiterzuentwickeln.

Verwenden Sie die gezeigten Beispiele zur Inspiration und las-sen Sie Ihren Ideen freien Lauf!

Nick bedankt sich …… denn ohne die direkte bzw. indirekte Unterstützung von Freun-den und Partnern wäre auch diese dritte Ausgabe des Buches so nicht möglich gewesen.

Selbstverständlich gilt mein besonderer Dank als Allererstes meiner Familie.

Darüber hinaus möchte ich mich persönlich direkt bedanken bei …

EE Yvonne – danke für dein Verständnis und für deine Rück-sichtnahme. »All the things you do to me and everything you said …«. Na …? ;) Ich liebe dich!

EE Sven Gasser – meinem Co-Autor – für die gute ZusammenarbeitEE Florian Plag – unserem technischen Gutachter und unserer

persönlichen »Lebensversicherung« – danke für dein besonde-res Engagement und die gute Zusammenarbeit!

EE Muse, The Living End, The Clash, Social Distortion, Johnny Cash und Volbeat … – ihr habt mich wieder einmal gut begleitet.

EE »Last, but definitely not least …« möchte ich mich erneut besonders bei allen Lesern und auch allen Kritikern meiner ersten beiden Büchern bedanken: Sie alle haben es wieder geschafft, mich für ein weiteres Buch zu motivieren!

Nick Weschkalnies

Sven bedankt sich …… zuallererst bei Nick für das große Vertrauen, das mir erst die Möglichkeit gegeben hat, an diesem großartigen Projekt mitzu-wirken. Außerdem gilt mein Dank natürlich all meinen Freunden, Bekannten und den Mitarbeitern meiner Agentur, die während der Arbeit an dem Buch stets voll und ganz hinter mir standen.

Natürlich geht auch bei mir ein ganz besonders großes Dan-keschön an meine Familie. Ohne euch und eure stetige Unter-

Alle Workshops finden Sie auch auf der Buch-DVD. Genau-ere Informationen hierzu erhalten Sie in Anhang E.

Page 23: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

24  | Vorwort

stützung wäre mir all das, was ich bisher verwirklichen konnte, niemals möglich gewesen.

Auch ich möchte mich abschließend noch bei ein paar Leuten persönlich bedanken, und zwar bei …

EE Patrick Gebauer – vielen Dank für all die Überstunden in unse-rer Agentur, in denen du mir viele meiner alltäglichen Projekte abgenommen hast, damit ich mich so oft wie möglich, auch während der Arbeitszeit, zum Schreiben hinter die Tastatur klemmen konnte.

EE Florian Plag – genau wie Nick möchte ich mich natürlich auch bei dir für deinen unermüdlichen Einsatz und dein unglaublich großes Fachwissen bedanken, mit dem du uns häufig während des Entstehungsprozesses des Skriptes hast helfen können. Danke für die tolle Zusammenarbeit!

EE Zu guter Letzt möchte ich mich bei einigen meiner Agen-turmitarbeitern wie Benjamin Böhm, Stefanie Mühlhaus und Berna Keklikler bedanken, die alle an dem Projekt beteiligt waren und die viele Ideen, Verbesserungsvorschläge und Engagement mit eingebracht haben.

Sven Gasser

Wir möchten uns gemeinsam bedanken bei …EE unserem Verlag und all denjenigen, die an diesem Buch mit-

gearbeitet habenEE Anja Riehl für ihre GrafikenEE Henning Stein für seine stilvollen FotografienEE Heiko Klüh für seine stimmigen SoundsamplesEE Jack Doyle für die gute Arbeit und die gute Dokumentation an

seiner Tween-EngineEE Jan Goyvaerts für die Bereitstellung von RegexBuddy 3

Über die Autoren

Nick Weschkalnies | (http://www.medianetic.de)Nick Weschkalnies, seit 2000 selbstständig tätig, ist Entwickler und Berater bei der Umsetzung von Medienprojekten für den On- und Offline-Bereich mit einem breiten Spektrum. Neben sei-ner praktischen Tätigkeit schreibt er seit 2002 Beiträge und Arti-kel für Fachzeitschriften, Internetportale und -magazine. 2008 wurde sein erstes Buch zu Flash CS3 veröffentlicht.

Nick Weschkalnies ist Autodidakt – seine Herangehensweise ist stets praxis- und problemlösungsorientiert. Zunächst angefan-gen als Mitglied einer der ersten deutschen Flash-Communities,

Page 24: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Vorwort | 25

den Flashworkern, über Beta-Tester und Mitglied in verschiede-nen Foren, kümmert er sich intensiv neben seiner Arbeit als Ent-wickler um die Belange von Endanwendern.

Sven Gasser | (http://www.delta-agentur.de)Seit dem Jahr 2003 ist Sven Gasser Teilhaber der Werbeagentur Delta Agentur in Bochum. Dort ist er Entwickler und Berater im Bereich Werbekommunikation für Web und Print. Außerdem ist er im TV und Radio als Experte für themenbezogene Reportagen präsent. Er ist ausgebildeter Fachinformatiker und wird im Jahr 2011 zusätzlich das Studium zum Betriebswirt abschließen, um das betriebsorientierte Denken und Handeln der Agentur weiter zu fördern.

2001 gründete er das deutschsprachige Forum Flashbattle.de. Neben seiner Tätigkeit in der Agentur schreibt er Fachartikel für Internetportale und Magazine. Seit 2004 hat er zusätzlich die fachliche Beratung für verschiedene IT-Bücher übernommen. Des Weiteren kümmert er sich im IHK-Prüfungsausschuss Bochum um die Mediengestalter in den Bereichen Digital und Print.

Machen Sie mit!Schreiben Sie uns, ob Ihnen das Buch gefallen hat oder was Ihnen ggf. nicht gefallen hat. Sie können uns auch Vorschläge, Beispiele, freies Bild-, Audio- oder Videomaterial für die nächste Ausgabe schicken. Wir berücksichtigen jedes Feedback. Versprochen!

In diesem Sinne …… wünschen wir Ihnen viel Freude beim Lesen dieses Buchs und beim Einsatz der gewonnenen Erkenntnisse!

Page 25: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

26  | Vorwort

Autorenbeiträge

Einige Kapitel wurden ursprünglich von Nick Weschkalnies geschrieben und für diese Ausgabe von Sven Gasser vollständig aktualisiert und überarbeitet. Andere Kapitel wurden von Nick Weschkalnies sowohl verfasst als auch für diese Ausgabe vollstän-dig neu überarbeitet. Die folgende Tabelle enthält eine Übersicht über die Zuständigkeiten der Autoren.

Kapitel Verantwortlicher Autor

1, »Was ist Flash?« Sven Gasser

2, »Arbeitsumgebung« Sven Gasser

3, »Zeichnen« Sven Gasser

4, »Symbole« Sven Gasser

5, »Animation« Sven Gasser

6, »Text« Sven Gasser

7, »Veröffentlichung« Sven Gasser

8, »ActionScript« Nick Weschkalnies

9, »Animation mit ActionScript« Nick Weschkalnies

10, »Einführung in die objektorientierte Programmierung«

Nick Weschkalnies

11, »Zeichnungs-API” Nick Weschkalnies

12, »Komponenten« Nick Weschkalnies

13, »Bitmaps« Nick Weschkalnies

14, »Sound« Nick Weschkalnies

15, »Video« Nick Weschkalnies

16, »Dynamischer Text« Nick Weschkalnies

17, »Flash, PHP und MySQL« Nick Weschkalnies

18, »XML« Nick Weschkalnies

19, »FileReference« Nick Weschkalnies

20, »Spieleprogrammierung« Nick Weschkalnies

21, »Ein Blick über den Tellerrand« Nick Weschkalnies

Anhang Nick Weschkalnies

Page 26: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

1.2 Entwicklungsumgebung, Player und Projektor | 29

KA

PIT

EL

1

1  Was ist Flash?

In diesem Kapitel lernen Sie, was Flash ist, wofür Sie es einsetzen können und welche Neuerungen es in Flash CS5 gegenüber den Vorgängerversionen gibt.

1.1  Flash-Historie

1996 wurde ein kleines Softwareunternehmen namens Future-Wave aus San Diego von Macromedia gekauft. Kurze Zeit später entwickelte sich aus dem Zusammenschluss beider Unternehmen und der Weiterentwicklung der Software »Future Splash Anima-tor« von FutureWave die erste Flash-Version. Zunächst wurde Flash ausschließlich für animierte Vektorgrafiken eingesetzt – seitdem hat es sich jedoch stetig, und nicht zuletzt durch die Übernahme von Macromedia seitens Adobe im Jahr 2005, wei-terentwickelt.

Flash avancierte bis heute zu einem vollständigen Multimedia-Autorensystem für Online- und Offline-Produktionen. Im Mai 2010 ist die elfte Version, Flash CS5, der beliebten Multimedia-Autorensoftware erschienen.

1.2  Entwicklungsumgebung, Player und Projektor

Mit Adobe Flash (kurz: Flash) wird die Entwicklungsumgebung zur Erstellung und Entwicklung multimedialer Inhalte, sogenann-ter »Flash-Filme« bezeichnet. Die in der Entwicklungsumgebung erstellten Dateien, auch als Quelldateien bezeichnet, haben die Dateierweiterung .fla. Quelldateien werden nur vom Flash-Anwender selbst benötigt, um das Projekt zu entwickeln oder zu erweitern.

Flash-Versionen

Die Produktbezeichnung der verschiedenen Flash-Versionen ist auf den ersten Blick nicht eindeutig und führt gelegentlich zu Missverständnissen. Die fol-gende Aufstellung klärt vermeid-liche Verwechslungen auf:

EE Flash MX Flash 6EE Flash MX 2004 Flash 7EE Flash 8 Flash 8EE Flash CS3 Flash 9EE Flash CS4 Flash 10EE Flash CS5 Flash 11

Flash Player Browser-PluginDas aktuelle Browser-Plugin für Ihren Browser können Sie unter der folgenden Adresse kostenlos herunterladen: http://get.adobe.com/de/­flashplayer/

Page 27: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

30  | 1 Was ist Flash?

Die aus den Quelldateien resultierenden Ergebnisse werden aus der Entwicklungsumgebung mittels eines Compilers erstellt. Die sogenannten SWF-Dateien mit gleichnamiger Dateiendung werden auch als Flash-Filme bezeichnet. SWF steht entweder für »Small Web Format« oder für »Shockwave Flash«. Welche Bezeichnung die richtige ist, lässt sich nicht mehr eindeutig fest-stellen.

Um Flash-Filme betrachten zu können, ist der sogenannte Flash Player erforderlich, der sowohl als »Standalone« als auch als Webbrowser-Plugin verfügbar ist und es ermöglicht, Flash im Webbrowser zu betrachten. Auch den Flash Player gibt es in verschiedenen Versionen. Zum Zeitpunkt der Drucklegung des Buches ist der Flash Player 10.1 aktuell. Aus der Entwicklungsum-gebung können zusätzlich sogenannte Projektoren erstellt wer-den. Projektoren haben in Windows die Dateierweiterung .exe und auf Macs die Dateierweiterung .app. Projektoren sind direkt ausführbar – der Flash Player ist integriert, sodass Projektoren autonom lauffähig sind.

»Shockwave Flash« oder »Small Web Format«Auch heute noch wird diskutiert, welche Bedeutung die richtige ist. Nach der ursprünglichen techni-schen Herkunft scheint »Shock-wave Flash« richtig zu sein. Hin-weise darauf fi nden sich auch heute noch in Verankerungen des Formats in Betriebssystemen und in JavaScript-Dateien von Adobe zur Einbettung eines Flash-Films in HTML. Gängiger erscheint je-doch der Begriff »Small Web For-mat«, weil die Begriffserklärung sich an der tatsächlichen Anwen-dung orientiert. Auch Adobe scheint diese Begriffserklärung in-zwischen zu bevorzugen.

GE Abbildung 1.1Ein Flash-Film im Firefox-Browser

Page 28: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

1.3 Vektoren und Pixel | 31

Um Flash-Filme im Webbrowser zu betrachten, werden diese auf einen Webserver geladen. Sie können dann z. B. mittels HTML und JavaScript eingebettet werden und im Webbrowser abge-spielt werden.

1.3  Vektoren und Pixel

Flash lässt sich als eine Kombination aus einem Programm zur Erstellung von Vektorgrafi ken und einer Animationssoftware bezeichnen. Über Flash lassen sich verschiedene Inhalte wie Bit-maps, Texte, Sounds und Videos zusammenführen und parallel im Flash Player darstellen bzw. ausgeben.

Vektorgrafi k | Eine Vektorgrafi k ist eine Computergrafi k, zu deren Darstellung mathematische Größen verwendet werden. Die Grafi k wird aus verschiedenen Werten berechnet. Um bei-spielsweise eine Linie darstellen zu können, werden dazu min-destens zwei Größen benötigt: der Anfangspunkt einer Linie und der Endpunkt. Das resultierende Ergebnis dieser Werte ist dann die berechnete Vektorgrafi k.

Skalierbarkeit | Im Gegensatz zu einer Pixelgrafi k (auch als Bit-map oder Rastergrafi k bezeichnet), die jeden Punkt einer Linie beispielsweise in einem Raster speichert, sind Vektorgrafi ken ohne Qualitätsverlust skalierbar. Die verlustfreie Skalierung von Vektorgrafi ken ist eine der Stärken von Flash.

FE Abbildung 1.2Ein Flash-Film im (Stand-Alone-)Flash Player

HinweisDie Dateiendung .app wird auf dem Mac nicht angezeigt.

Flash arbeitet vektorbasiert.

Obwohl Flash selbst auch Pixel-grafi ken und im zunehmenden Maße Techniken zur Manipula-tion von Pixeln bietet, arbeitet Flash vektorbasiert und ist in erster Linie ein Programm zur Erstellung von Vektorgrafi ken und -animationen.

Page 29: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

32  | 1 Was ist Flash?

GE Abbildung 1.3Oben: Pixelgrafi k, unten: Vektorgrafi k

1.4  Anwendungsbereiche

Flash wird mittlerweile in sehr vielen Bereichen genutzt – die Zeit von langatmigen Flash-Intros ist bereits lange vorbei. Nachfol-gend werden exemplarisch einige Anwendungsbereiche gezeigt.

[Rastergrafi k ]Eine Rastergrafi k besteht aus einer rasterförmigen Anordnung von Pixeln (Bildpunkten). Jedem Bild-punkt wird eine bestimmte Farbe zugeordnet. Alle diese Bildpunkte zusammengenommen ergeben dann das fertige Bild.

Dateigröße

Da geometrische Formen wie z. B. ein Rechteck oder eine El-lipse mittels Vektoren dargestellt werden, benötigen Grafi ken und Animationen im Vektorformat im Vergleich zur Darstellung über Pixelgrafi ken weniger Speicher.

Abbildung 1.4E E

Flash-Animation von HybridWorks

Page 30: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

1.4 Anwendungsbereiche | 33

Animationen | Animationen werden sowohl für Werbeeinblen-dungen, animierte Comics, Spiele, Präsentationen als auch in vielen anderen Anwendungsbereichen unterstützend eingesetzt. Da Animationen über einen zeitlichen Ablauf verfügen, können sie dazu genutzt werden, Inhalte auf ansprechende Weise darzu-stellen bzw. zu präsentieren. Die Aufmerksamkeit des Betrachters auf bestimmte Elemente von Inhalten zu lenken, kann mittels Animationen bewusst zeitlich gesteuert werden.

Benutzeroberfl ächen | Flash wird zur Erstellung von Benutzer-oberfl ächen sowohl für das Web als auch für CD- und DVD-Pro-duktionen verwendet. Mittels Flash Lite und dem Flash Player in der Version 10.x können Benutzeroberfl ächen auch für mobile Endgeräte wie z. B. PDAs oder Handys in Flash entwickelt wer-den. Mithilfe von Adobe AIR (Adobe Integrated Runtime) lassen sich auch plattformübergreifende Desktop-Anwendungen auf Flash-Basis erstellen.

Aktuelle Meldungen | Zur Ausgabe von aktuellen Meldungen wie Nachrichten, die in einem begrenzten Bereich einer Web-seite oder Offl ine-Anwendung, z. B. einem RSS-Reader, darge-stellt werden, lässt sich Flash einsetzen.

GE Abbildung 1.5Flash-basierter RSS-Reader von my.gritwire.com

Animationsbeispielhttp://www.hybridworks.jp/icorn/top.shtml

Flash Lite und Adobe AIRMehr zu Flash Lite und zu Adobe AIR erfahren Sie in Kapitel 21, »Ein Blick über den Tellerrand«.

Page 31: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

34  | 1 Was ist Flash?

Präsentationen | Die vielfältigen Möglichkeiten, verschiedene Medien in Flash parallel einzusetzen, bieten die idealen Voraus-setzungen für Produktpräsentationen, sowohl für Online-Präsen-tationen im Web als auch für Offl ine-Produktionen (CD, DVD, USB etc.).

Spiele | Online- und Offl ine-Spiele werden aufgrund der Leis-tungssteigerung immer häufi ger mit Flash entwickelt. Dabei las-sen sich Animationen und Interaktivität in Flash kombinieren, um sowohl klassische Spielideen (Kniffel, Pong, Snake etc.) als auch grafi sch anspruchsvollere 2D- oder 3D-Spiele umzusetzen. Die Entwicklung von 3D-Spielen in Flash ist jedoch vergleichsweise aufwendig, da Flash selbst nicht ausreichend viele 3D-Funk-tionen zur Verfügung stellt und meist eigene 3D-Engines entwi-ckelt werden müssen. Für diesen Bereich gibt es einige sehr gute Programme, mit denen Sie anspruchsvolle 3D-Grafi ken erstellen können. Dazu zählen z. B. Away3D und Cinema 4D.

BildschirmschonerFlash kann auch zur Erstellung von Bildschirmschonern verwen-det werden. Dazu sind jedoch er-gänzende Tools notwendig. Mehr dazu erfahren Sie in Kapitel 21, »Ein Blick über den Tellerrand«.

Abbildung 1.6E E

Produktpräsentation von Mercedes-Benz Deutschland (http://www.mercedes-benz.de)

Multiplayer-Spiele

In Kombination mit Server-technologien lassen sich auch Multiuser-Spiele umsetzen.

Abbildung 1.7E E

Boom Bang – Denk- und Logik-Online-Flash-Spiel

Page 32: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

1.4 Anwendungsbereiche | 35

Rich Internet Applications | Als Rich Internet Applications (RIA) werden Anwendungen bezeichnet, die Internettechniken verwenden, um mit interaktiven Benutzeroberfl ächen auf ent-fernte Daten zuzugreifen. Dazu gehören Kalenderanwendungen, Schulungs- und Prüfungsanwendungen, Shop-Systeme, Preissu-che, Kartensuche etc. RIAs lassen sich fl ashbasiert sowohl für den Browser als auch als Desktop-Anwendung mittels Adobe AIR ent-wickeln. Für die Erstellung von RIAs wird alternativ zu Flash auch häufi g Flex verwendet. Mehr zu Flex erfahren Sie in Kapitel 21, »Ein Blick über den Tellerrand«.

Ein Beispiel ist diese Suchmaschine für Flickr-Tags: http://www.airtightinteractive.com/projects/related_tag_browser/app/

GE Abbildung 1.8Flickr: Tag-Browser von airtightinteractive.com

Video-Anwendungen | Da der Flash Player im Web sehr verbrei-tet ist und über leistungsstarke integrierte Video-Codecs verfügt, die neben einer guten Kompression auch eine verhältnismäßig gute Qualität bieten, wird Flash im Web auch als Video-Player verwendet – z. B. von youtube.com.

Video-Wiedergabe: Flash gegen HTML 5 | Aktuell ist in aller Munde das Thema HTML 5 und die Möglichkeit, damit Videos, Musik und sogar Spiele innerhalb einer Webseite abspielen zu können, ohne dass ein zusätzliches Plugin vorhanden sein muss.

Der Unterschied zu Adobe Flash ist, dass HTML 5 ein her-stellerunabhängiger Webstandard ist. Vorteil für Webentwickler ist hier, dass diese dadurch mehr Planungssicherheit haben und unabhängig von bestimmten Herstellern Animationen etc. ent-

Webseiten

Eine gute Quelle zur Inspiration sind Portale oder Flash-Awards, die in unterschiedlichen Abstän-den verschiedene Flash-Websei-ten prämieren. Lassen Sie sich inspirieren, z. B. unter:http://www.thefwa.com/

Page 33: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

36  | 1 Was ist Flash?

wickeln können. Auch das Thema Lizenzkosten spielt dabei eine Rolle, da der Einsatz professioneller Programme wie z. B. Flash CS5 im Gegensatz zu HTML5 natürlich Geld kostet.Aktuell gibt es drei verschiedene Video-Codecs, die versuchen, das Internet zu erobern: H.264, Ogg/Theora und von Google der Codec VP8. Alle drei Codecs haben ihre Vor- und Nachteile, sodass abzuwarten ist, welcher von den dreien sich durchsetzen wird.

Der Codec H.264 wird dafür kritisiert, dass in absehbarer Zeit Lizenzkosten anfallen könnten. Bei Ogg/Theora warnen Kritiker vor den sogenannten U-Boot-Patenten. Hierbei handelt es sich um Patente, die eine Rolle für die Implementierung des Standards spielen, aber keiner weiß, ob es sich dabei um eine patentierte Technik handelt. Patentinhaber könnten sich dann eventuell erst zu Wort melden, wenn der Codec bereits genügend Verbreitung gefunden hat. Was dies für kostentechnische Konsequenzen haben könnte, dürfte jedem klar sein.

Dann gibt es noch den Codec VP8 aus dem Hause Google, der eine Ähnlichkeit mit dem H.264 haben soll. Ein großer Vorteil hier ist, dass dieser Codec von Google als Open Source zur Verfü-gung gestellt wird. Somit haben wir mit VP8 einen weiteren inte-ressanten Codec für die nächsten Jahre. Führende Anbieter wie Microsoft, Mozilla und selbstverständlich Google wollen diesen Codec mit in ihre Browser integrieren. Lediglich Apple weigert sich nach aktuellen Aussagen in einem Blog dazu. Es gilt daher abzuwarten, ob und wie lange Apple dem Druck standhalten kann, bis VP8 auch im Safari integriert wird.

Da sich aber allgemein in den letzten Monaten sehr viel getan hat, ist es noch völlig offen, welcher Codec letztlich der neue Standard für das Web sein wird. Es sollte auch bedacht werden, dass HTML 5 noch kein finaler Standard ist und teilweise noch in den Kinderschuhen steckt. HTML 5 wird Flash also wahrschein-lich nicht komplett ablösen, wie es teilweise aus einigen Kreisen bereits zu hören ist, sondern es wird lediglich zu einer Verschie-bung der Aufgabengebiete kommen.

E-Learning | Für E-Learning-Module ist Flash ebenso geeignet, da verschiedene Medien wie Audio (Sprachausgabe), Video (Lern-videos), Bitmaps und Vektoren (erläuternde Bilder, Diagramme) und Text miteinander verknüpft werden können. Über Action-Script lassen sich dann gegebenenfalls Test- und Prüfungseinhei-ten sowie eine serverseitige Verarbeitung realisieren.

HTML 5 – eine Alternative zu Flash?

Da sich bislang noch kein Codec etabliert hat, wird HTML 5 Flash in absehbarer Zeit wohl nicht ersetzen.

SimulationenMittels Vektoranimationen können schnell ladende Simulationen ge-zeigt werden – mittels Action-Script sogar dynamische Simula-tionen und Ausgaben (z. B. animierte Chartdiagramme). Simu-lationen werden häufig für E-Lear-ning-Produktionen entwickelt.

Page 34: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

1.5 Neues in Flash CS5 | 37

1.5  Neues in Flash CS5

Die Neuerungen der Vorgängerversion Flash CS4 richteten sich schwerpunktmäßig an design- und grafi korientierte Benutzer. In der neuen Version Flash CS5 hat Adobe sowohl viele Neuerungen für Programmierer als auch für Designer eingeführt. Die wichtigs-ten Neuerungen werden im Folgenden kurz vorgestellt.

Benutzeroberfl äche | Standardmäßig befi ndet sich die Zeitleiste 1 in der Arbeitsumgebung unten, rechts befi ndet sich die Werk-zeugleiste 3. Nach der Installation ist beim ersten Öffnen von Flash die Ansicht auf Basis 2 voreingestellt.

FE Abbildung 1.9Flash-Video-Player von youtube.com

Layout verändernWie gewohnt lässt sich das Layout beliebig verändern. Flash spei-chert die vorgenommenen Ände-rungen am Layout standardmäßig ab, sodass Änderungen auch bei einem Neustart erhalten bleiben.

HE Abbildung 1.10Die neue Oberfl äche von Flash CS5

3

b

a

Page 35: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

38  | 1 Was ist Flash?

In der Arbeitsumgebung lassen sich numerische Eigenschafts-werte wie z. B. die Position eines Objekts auch mit der Maus ver-ändern. Dazu klicken Sie einen Wert mit der Maus an, halten die Maustaste gedrückt und können dann durch eine Links- bzw. Rechtsbewegung der Maus den Wert verkleinern bzw. vergrö-ßern 1. Ein ähnliches Bedienkonzept gab es bereits in früheren Versionen von Adobe After Effects. Um die zahlreichen Einstel-lungsmöglichkeiten wie z. B. bei Textfeldern in einem begrenzten Bereich abbilden zu können, wurden teilweise Scrollleisten 2 in verschiedene Fenster integriert.

Inverse Kinematik – »Feder « | Eine sehr bemerkenswerte Neu-erung gab es in Flash CS4, das Werkzeug der inversen Kinema-tik, das das Erstellen von Charakteranimationen und natürlichen Bewegungen ermöglicht. Dieses Werkzeug wurde in Flash CS5 nochmals verbessert. Neu hinzugekommen ist die Option Feder, die das natürliche Animieren nun noch realistischer aussehen lässt. Mit der Eigenschaft Feder oder besser gesagt der Sprungfe-der, kann ab sofort die Federhärte eingestellt werden.

Um die Eigenschaft Feder zu aktivieren, wählen Sie zunächst die einzelnen Bones des IK-Skeletts mit dem Auswahlwerkzeug aus und ändern die Werte Stärke und Dämpfung im Eigenschaf-ten-Fenster im Reiter Feder 1. Damit diese Einstellungen wirk-sam werden, müssen Sie darauf achten, dass für das IK-Skelett die Option Aktivieren 2 im Eigenschaften-Fenster im Reiter Federn ausgewählt ist. Mehr zum Thema Feder fi nden Sie in Unterabschnitt »Federn aktivieren« in Abschnitt 5.10, »Inverse Kine matik«.

GE Abbildung 1.12Federeigenschaften

GE Abbildung 1.13Die Eigenschaft Federn wurde für das Skelett aktiviert.

Neue Text-Engine TLF | Das neue »Text Layout Framework« (kurz: TLF) ermöglicht in Flash CS5 die bessere Gestaltung von

GE Abbildung 1.11Numerische Eigenschaftswerte lassen sich mit der Maus ändern.

1

b

Bones

Mit Bones (engl. für »Knochen«) lassen sich Bereiche einer Form oder MovieClips miteinander verketten. Eine solche Ver-kettung wird auch als Skelett bezeichnet. Bones werden in einem Skelett in einer Hierarchie aus über- und untergeordneten Elementen miteinander verbun-den. Mehr zur inversen Kine-matik fi nden Sie in Kapitel 5, »Animation«.

a

2

Page 36: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

1.5 Neues in Flash CS5 | 39

Texten. Textfelder lassen sich jetzt ohne Probleme in mehrere Spalten aufteilen 1. Auch die Abstände zum Rand einer Textbox können Sie jetzt in Flash einstellen. Eine weitere Neuerung ist das Verbinden von Textboxen 2. Einige Designer kennen diese Funktion vielleicht schon – beispielsweise aus Adobe InDesign. Zu langer Text fl ießt einfach von der einen Textbox in die andere mit ihr verbundene Textbox. Zusätzlich gibt es auch die Möglich-keit des Einstellens von Ligaturen. Mit dieser Option können die Buchstabenabstände sowie Ligaturen noch feiner justiert werden.

GE Abbildung 1.14Zweispaltiges Textfeld

GE Abbildung 1.15Verbindung von zwei Textfeldern

ActionScript-Editor: Codegenerierung | In der Vergangenheit hatte der ActionScript-Editor einiges an Kritik geerntet, daher wurde er jetzt um eine hilfreiche Funktion erweitert. Das Einblen-den von Codehinweisen und das automatische Vervollständigen von Quellcode werden das Entwickeln für Programmierer noch angenehmer und zugleich schneller machen. Denn es müssen jetzt lediglich die ersten Buchstaben 1 eingegeben werden, und die Codevorschläge 2 werden von Flash automatisch angezeigt.

a

b

HE Abbildung 1.16Anzeige von Codehinweisen

ab

Page 37: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

40  | 1 Was ist Flash?

Diese können jetzt schnell mit der Maus oder der Tastatur aus-gewählt werden und ersparen Ihnen so das manuelle Tippen von ActionScript-Code. Sollten die Vorschläge verschwinden, können Sie sich diese mit der Tastenkombination (Strg) + (Leertaste) wieder anzeigen lassen, sofern Codevorschläge für Ihre Aktion verfügbar sind.

Deko-Werkzeuge | Eine weitere interessante Neuerung fi n-det sich im Deko-Werkzeug 1, das uns beim Zeichnen z. B. eine Reihe von Baumtypen zur Auswahl anbietet, die beliebig auf der Bühne positioniert werden können. Je länger die Maus-taste gedrückt bleibt, umso mehr Bäume werden auf der Bühne erstellt. Des Weiteren gibt es auch diverse Pfl anzen, Blitze oder auch Feuereffekte, die sehr schnell und realistisch für Animatio-nen genutzt werden können.

GE Abbildung 1.18Eine mit dem Deko-Werkzeug erstellte Pfl anze und zwei verschiedene Bäume

XML-basierende FLA-Quelldateien – XFL-Dateiformat | Beim Abspeichern einer Flash-Datei fi ndet sich eine weitere sehr nütz-liche Eigenschaft, da es in Flash CS5 jetzt möglich ist, das aktuelle Projekt im XFL-Format abzuspeichern.

XFL (Flash Exchange Format) ist ein neues offenes Dateifor-mat, das mit Flash CS5 eingeführt wurde. Das auf XML basie-rende Format hat den Vorteil, dass alle Ressourcen einer Flash-Quelldatei wie z. B. Bilder oder defi nierte Texte als Klartext in XML-Form gespeichert werden.

Der Workfl ow wird somit für viele Entwickler vereinfacht. Möchten Sie z. B. eine Grafi k oder einen Text in Flash ersetzen, ohne Flash zu öffnen, müssen Sie die entsprechende Grafi k nur noch in der Ordnerstruktur überschreiben oder den entspre-chenden Text in der XML-Datei ändern. Wenn zu einem späte-

GE AbbildungDeko-Werkzeug-Icon zum Erstel-len von dekorativen Grafi kele-menten

a

GE Abbildung 1.19Feueranimation mit dem Deko-Werkzeug

Page 38: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

1.5 Neues in Flash CS5 | 41

ren Zeitpunkt Flash geöffnet wird, werden die überschriebene Grafi k sowie der überarbeitete Text automatisch innerhalb von Flash ersetzt. Mehr zu diesem Thema erfahren Sie in Abschnitt 7.7, »FLA-Datei als XFL-Datei speichern«.

Integration innerhalb der Creative Suite 5 | Der Workfl ow innerhalb der Creative Suite wurde von Adobe nochmals dahin-gehend verbessert, dass das Im- und Exportieren von Daten nun leichter vonstattengeht. Es lassen sich z. B. problemlos auch Pro-jekte aus Photoshop oder Illustrator für die Weiterverarbeitung importieren. Dazu können Dateien im FXG-Format (Flash XML Graphics) gespeichert werden.

Verbesserte Video-Funktionen | Die Video-Funktionen wurden in der neuen Version Flash CS5 weiter überarbeitet. Somit ist es für den Benutzer noch einfacher, Videos hinzuzufügen. Zudem gibt es auch neue Skins, die sich sehr leicht schon beim Einbin-den des Videos in ihrer Farbe anpassen lassen 1.

FE Abbildung 1.20Datei und Ordnerstruktur im XFL-Format

GE Abbildung 1.21Verbessertes Zusammenspiel von Flash und der restlichen Creative Suite

FE Abbildung 1.22Farbauswahl für Video-Skins bei der Video-Einbindung

a

Page 39: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

42  | 1 Was ist Flash?

Das FLV-Video kann nun auch direkt in der Flash-IDE (Integra-ted Development Environment; engl. für »integrierte Entwick-lungsumgebung«) abgespielt werden. Dies hat den Vorteil, dass jetzt direkt ersichtlich wird, wie das Video im Flash-Film aussieht, ohne dass der ganze Film erst veröffentlicht werden muss. In einem Zusatzfenster können jetzt auch mit noch weniger Maus-klicks als zuvor neue CUE-Points hinzugefügt werden, mit denen dann beim Erreichen dieser Punkte ActionScript-Code ausgelöst werden kann.

Neue Template-Vorlagen | Eine ganze Reihe neuer Projektvor-lagen 1 ist in Flash CS5 hinzugekommen. Die Vorlagen werden direkt im Willkommensbildschirm beim Start von Flash angezeigt.

Sehr hilfreich für Einsteiger sind dabei die Beispieldateien 2, in denen sich nützliche Vorlagen für Animationen oder Action-Script-Code fi nden lassen. Sollte Flash Neuland für Sie sein, ist es zu empfehlen, dass Sie sich das eine oder andere Beispiel anse-hen, um die Arbeitsweise von Flash noch besser zu verstehen.

GE Abbildung 1.24Willkommensbildschirm von Flash für die Vorlagenauswahl

Inhalte für das iPhone | Groß angekündigt wurde von Adobe die neue Möglichkeit, mit Flash CS5 Code zu schreiben, der für die Erstellung von iPhone-Apps genutzt werden kann.

Da allerdings Apple sehr kurzfristig vor der Markteinführung von Flash CS5 die Richtlinien für das iPhone SDK 4 geändert hat, ist es nun seitens Apple untersagt, »fremden« Code in eine iPhone-App zu konvertieren. Es besteht daher ein großes Risiko für den Entwickler, dass das entwickelte App von Apple für den App-Store abgelehnt wird. Daher kann leider niemand diese Funktion von Flash wirklich sinnvoll nutzen. Da diese Entschei-dung sehr kurzfristig von Apple getroffen wurde, konnte Adobe

GE Abbildung 1.23Direktes Abspielen von Videos in der »Flash-Arbeitsumgebung«

GE Abbildung 1.25Verschiedene Animations- und ActionScript-Vorlagenbeispiele

a

b

iPhone-AppsDa die Entwicklung von iPhone-Apps mit Flash CS5 von Adobe nicht weiter vorangetrieben wird, werden wir in diesem Buch auch nicht mehr speziell auf dieses Thema eingehen. Adobe selbst rät davon ab, mit Flash CS5 Apps für das iPhone zu entwickeln.

Page 40: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

1.5 Neues in Flash CS5 | 43

diese Funktion nicht mehr rechtzeitig aus Flash CS5 entfernen. Adobe hat aber bereits bekannt gegeben, dass die Weiterent-wicklung dieser Funktion eingestellt wird. Aus diesen Gründen macht es wenig Sinn, sich in die Funktion einzuarbeiten.

Weitere Neuerungen in Flash CS5 | Zusätzlich zu den bereits genannten Neuerungen gibt es zahlreiche kleine Detailverbesse-rungen und Neuerungen. Dazu gehören u. a.:

EE Codefragmente: Über den Menüpunkt Fenster • Codefrag-mente kann das Fenster mit diversen ActionScript-Codevorla-gen geöffnet werden. Diese sind gerade für Einsteiger in die Programmiersprache ActionScript sehr hilfreich, da hier auf sehr viele Codebeispiele zugegriffen werden kann und diese somit nicht selbst programmiert werden müssen. Auch kön-nen selbst eigene Codebausteine hinzugefügt werden, auf die während der Entwicklung mit einem Doppelklick zugegriffen werden kann. Diese Möglichkeit ist vor allem dann sehr prak-tisch, wenn man sich das immer wiederholende Eingeben von Standardcodes sparen möchte. Bestes Beispiel in diesem Fall sind die Angaben für das Importieren von ActionScript-Klassen am Anfang eines Flash-Filmes. Wenn Sie bestimmte Klassen in einem neuen Projekt immer wieder importieren müssen, macht sich diese Funktion der Codefragmente sehr vorteilhaft bemerkbar, da Sie nicht immer wieder alles von Neuen ein-tippen müssen, sondern auf Ihr selbst erstelltes Codefragment zugreifen können.

EE CS Live: Mit dem neuen Dienst Adobe CS Live können die Arbeitsabläufe für Entwickler vereinfacht werden. Eine Funk-tion, die vorwiegend für Agenturen und Kreativteams gedacht ist, die mit dem neuen Dienst die Abstimmung der Arbeits-abläufe im Kreativprozess, Kompatibilitätstests für Webseiten etc. verbessern können. Auch auf Statistiken für Browser oder Betriebssysteme kann zugegriffen werden, um die Inhalte für die nötigen Geräte zu optimieren. Viele weitere interessante Vorteile fi nden Sie auch auf der Adobe-Seite: http://www.adobe.com/de/products/creativesuite/cslive/

EE SWF-Verlauf : Eine sehr interessante Neuerung in Flash CS5 ist die Protokollierung der SWF-Dateigröße. Diese hält bei jedem Erstellen einer neuen SWF-Datei die Größe 1 und das Erstellungsdatum inklusive Uhrzeit 2 während der Testphase fest. Damit kann gut der Verlauf des Projekts in Bezug auf die Größe beobachtet werden. Sollte sich zwischen zwei Testpha-sen die Dateigröße mehr als verdoppeln, wird von Flash ein Hinweis 3 gegeben.

GE Abbildung 1.26Das Fenster Codefragmente

GE Abbildung 1.27SWF-Verlauf mit Hinweis auf eine Verdopplung der Dateigröße

a

b

c

Page 41: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

44  | 1 Was ist Flash?

EE Hilfe-Funktion: Standardmäßig führt die Hilfe, die Sie über (F1) erreichen können, zur Online-Hilfe von Adobe. Adobe kann die Hilfeinhalte so leichter aktualisieren. Zusätzlich ste-hen Ihnen auf den Online-Seiten der Hilfe auch Benutzerkom-mentare zur Verfügung.

EE Integration mit Adobe Flash Builder: Adobe Flash Builder 4 war bisher unter dem Namen Adobe Flex Builder bekannt. Seit der Version Flash CS5 besteht nun eine direkte Anbindung an das Programm. Dies sorgt für eine höhere Effizienz bei der Entwicklung Ihrer Projekte. Mit Hilfe dieses Tools lassen sich auf möglichst einfachem Weg plattformübergreifende Rich-Internet-Anwendungen (RIAs) erstellen. Adobe Flash Builder ist eine Editor-Oberfläche eines umfangreichen ActionScript-Editors, der vielfältige Programmiersprachen zulässt, diese gut umsetzen kann und viele Hilfestellungen für angehende Entwickler bietet. Der Adobe Flash Builder kann als primärer ActionScript-Editor für Projekte genutzt und der darin erstellte Quelltext in Adobe Flash getestet, debuggt und veröffentlicht werden. Durch die direkte Anbindung an die Designanwen-dungen in der Adobe Master Collection ist Adobe Flash Buil-der die neue Brücke zwischen Designern und Entwicklern.

Tipp: Online-Hilfe deaktivieren

Wenn Sie über keine Internet-verbindung verfügen oder die Online-Hilfe nicht nutzen möch-ten, können Sie diese über das Fenster Fenster • Erweiterun-gen • Verbindungen im Menü durch Aktivierung der Option Offline-Optionen deaktivieren. Daraufhin öffnet sich via (F1) dann wie gewohnt eine Offline-Hilfe.

Page 42: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.1 Interaktion | 785

KA

PIT

EL

20

20  Spieleprogrammierung

Der Browser-Spielemarkt wächst weiterhin von Jahr zu Jahr. Dabei werden immer mehr Spiele auf Flash basierend erstellt. Sowohl Computerspiel- als auch Konsolenspiel-Klassiker wie z. B. Donkey Kong, Snake, Katakis, Pong, Turrican, Tetris oder digitale Adaptionen von Brett- und Kartenspielen wie Schach, Skat, Poker oder Aufbauspiele wie beispielsweise Farmville (Social-Network-Spiele, Facebook-Spiel) sowie technisch anspruchsvollere Spiele wie 3D-Rennspiele und 3D-Ego-Shooter werden inzwischen auf Flash basierend entwickelt.

Je nach Spielprinzip werden dabei teilweise sehr viele unter-schiedliche Techniken eingesetzt. Im Verlauf dieses Kapitels werden zunächst einige grundlegende Techniken und klassische Spielbestandteile erläutert.

Abschließend finden Sie am Ende des Kapitels ein Beispiel und Erläuterungen dazu, wie Sie ein Spiel mit Flash entwickeln kön-nen. Das Spiel ist bewusst einfach gehalten.

20.1  Interaktion

Ein wichtiger Bestandteil von Spielen ist die Interaktionsmöglich-keit, die klassisch meist über die Tastatur oder über die Maus erfolgt. Da die Spielsteuerung je nach Spielprinzip sehr unter-schiedlich ausfällt, werden im Folgenden ausschließlich die Grundlagen dazu erläutert.

20.1.1  TastatursteuerungZur Steuerung über die Tastatur können Sie sogenannte Key-board-Ereignisse nutzen. Das Ereignis KeyboardEvent.KEY_DOWN wird aufgerufen, wenn eine Taste gedrückt wurde. Das Ereignis KeyboardEvent.KEY_UP wird aufgerufen, wenn eine Taste wieder losgelassen wurde. Um auf ein Ereignis reagieren zu können, kön-nen Sie einen Ereignis-Listener an einem Objekt registrieren, das die Klasse InteractiveObject erweitert. In vielen Fällen wird

SpieleprogrammierungEin erfahrener Projektmanager aus der Computerspielbranche sagte einst sinngemäß den klugen Satz: »Es gibt Anwendungsentwickler, und es gibt Spieleentwickler.« Auf dem Markt gibt es tatsächlich nur wenige Entwickler, die sich pro-fessionell mit beiden Bereichen beschäftigen. Das liegt vermutlich daran, dass sowohl die inhaltliche, strategische als auch die techni-sche Herangehensweise bei der Spieleentwicklung und der An-wendungsentwicklung sehr unter-schiedlich ausfallen.

HinweisViele der nachfolgenden Elemente lassen sich auch in anderen An-wendungsbereichen einsetzen.

Tastaturbefehle deaktivierenUm auf Keyboard-Ereignisse in einem Flash-Film reagieren zu können, der über die Entwick-lungsumgebung getestet wird (Steuerung • Film testen), sollten Sie die Option Steuerelement • Tastaturbefehle deaktivieren im Flash Player aktivieren (am Mac finden Sie die Option unter Steu-erung • Film testen • Steuerung • Tastaturbefehle deaktivieren). Anderenfalls werden einige Tasta-tureingaben nicht registriert.

Page 43: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

786  | 20 Spieleprogrammierung

ein solcher Ereignis-Listener an der Bühne (Stage-Objekt) regist-riert, wie im folgenden Beispiel zu sehen ist:

stage.addEventListener(KeyboardEvent.KEY_DOWN,

keyDownHandler);

stage.addEventListener(KeyboardEvent.KEY_UP,

keyUpHandler);

function keyDownHandler(e:KeyboardEvent):void {

trace(e.keyCode + " gedrückt");

}

function keyUpHandler(e:KeyboardEvent):void {

trace(e.keyCode + " losgelassen");

}

Über die Eigenschaft keyCode des an die Ereignisprozedur über-gebenen KeyboardEvent -Objekts können Sie feststellen, welche Taste gedrückt wurde. Wenn Sie beispielsweise auf das Drücken der Pfeil-Tasten reagieren möchten, könnten Sie dazu folgenden Code verwenden:

stage.addEventListener(KeyboardEvent.KEY_DOWN,

keyDownHandler);

function keyDownHandler(e:KeyboardEvent):void {

switch(e.keyCode) {

case 37:

trace("Linke Pfeiltaste");

break;

case 38:

trace("Obere Pfeiltaste");

break;

case 40:

trace("Untere Pfeiltaste");

break;

case 39:

trace("Rechte Pfeiltaste");

break;

}

}

Wenn das Spiel zu Ende ist und Sie die Tastaturabfrage been-den möchten, können Sie die Methode removeEventListener verwenden, um den Ereignis-Listener wieder zu entfernen (vom Objekt zu lösen):

GE Abbildung 20.1Der Menüpunkt Tastaturbefehle deaktivieren

Key-Codes

Die wichtigsten Key-Codes fi nden Sie im Anhang dieses Buches.

Page 44: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.1 Interaktion | 787

stage.removeEventListener(KeyboardEvent.KEY_DOWN,

keyDownHandler);

20.1.2  MaussteuerungViele aktuelle Flash-Spiele werden über die Maus gesteuert. An verschiedenen Stellen dieses Buches haben Sie bereits Ereignisse kennengelernt, die sich für Maussteuerungen nutzen lassen. Im Folgenden werden noch einmal einige wichtige Mausereignisse exemplarisch erläutert.

Sie können Mausereignisse am Stage-Objekt selbst oder an bestimmten Objekten wie z. B. einem MovieClip registrieren. Wenn Sie Mausereignisse am Stage-Objekt registrieren, können Sie z. B. feststellen, ob der Benutzer die Maustaste an einer beliebi-gen Stelle des Flash-Films gedrückt hat. Registrieren Sie ein Mau-sereignis hingegen an einem Objekt wie z. B. einem MovieClip, wird das Ereignis nur ausgelöst, wenn sich der Mauszeiger über dem Objekt befindet. Angenommen, Sie möchten feststellen, ob der Benutzer die Maustaste an einer beliebigen Stelle innerhalb des Bereichs des Flash-Films gedrückt hat. Dazu können Sie das Ereignis MouseEvent.MOUSE_DOWN wie folgt verwenden:

stage.addEventListener(MouseEvent.MOUSE_DOWN,

mouseDownHandler);

function mouseDownHandler(e:MouseEvent):void {

trace("Maustaste gedrückt.");

}

Um festzustellen, ob die Maustaste über einem bestimmten Objekt gedrückt wurde, können Sie das Ereignis wie folgt nut-zen:

mc.addEventListener(MouseEvent.MOUSE_DOWN,

mouseDownHandler);

function mouseDownHandler(e:MouseEvent):void {

trace("Maustaste über dem Objekt "+e.currentTarget.

name +" gedrückt.");

}

Wenn die Maustaste gleichzeitig gedrückt und bewegt wird, wird das Ereignis erst ausgelöst, wenn die Taste wieder losgelassen wird.

Bei einigen Spielen wie z. B. bei Puzzle-Spielen werden Objekte auf der Bühne mit der Maus verschoben. Um ein Objekt per Drag & Drop zu verschieben, können Sie die Methoden startDrag

Mausrad verwendenÜber das Ereignis MouseEvent.MOUSE_WHEEL können Sie auf die Bewegung des Mausrads reagie-ren (am Mac wird dies nicht un-terstützt). Dazu folgendes Bei-spiel:stage.addEventListener

(MouseEvent.MOUSE_WHEEL,

mouseWheelHandler);

function mouseWheelHandler

(e:MouseEvent):void {

trace(e.delta + " Zeilen

gescrollt.");

}

Mausrad am MacIn Anhang A, »FAQ«, finden Sie einen Workaround, wie Sie Maus-radbewegungen auch am Mac ab-fragen können.

Page 45: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

788  | 20 Spieleprogrammierung

und stopDrag in Kombination mit den Mausereignissen MOUSE_DOWN und MOUSE_UP wie folgt verwenden:

mc.addEventListener(MouseEvent.MOUSE_DOWN,

mouseDownHandler);

mc.addEventListener(MouseEvent.MOUSE_UP,

mouseUpHandler);

function mouseDownHandler(e:MouseEvent):void {

e.currentTarget.startDrag();

}

function mouseUpHandler(e:MouseEvent):void {

e.currentTarget.stopDrag();

}

Klickt der Benutzer auf den MovieClip »mc«, wird der Drag-Vor-gang gestartet. Lässt er die Maustaste über dem Objekt wieder los, wird der Drag-Vorgang gestoppt. In der folgenden Tabelle sind die wichtigsten Mausereignisse zusammengefasst.

Ereignis Beispiel Beschreibung

MouseEvent.CLICK mc.addEventListener(MouseEvent.CLICK,

clickHandler);

function clickHandler(e:MouseEvent):void {

trace(e.currentTarget.name+" angeklickt.");

}

Wird ausgelöst, wenn der Benutzer die Maustaste über einem Objekt drückt.

MouseEvent.DOUBLE_CLICK mc.doubleClickEnabled = true;

mc.addEventListener(MouseEvent.DOUBLE_CLICK,

doubleclickHandler);

function doubleclickHandler(e:MouseEvent):

void {

trace(e.currentTarget.name+" per Doppel-

klick angeklickt.");

}

Wird ausgelöst, wenn der Benutzer einen Doppelklick über einem Objekt ausführt. Die Eigenschaft double-ClickEnabled des Objekts muss auf true gesetzt sein.

MouseEvent.MOUSE_DOWN stage.addEventListener(MouseEvent.MOUSE_DOWN,

mouseDownHandler);

function mouseDownHandler(e:MouseEvent):void {

trace("Die Maustaste wurde gedrückt.");

}

Die linke Maustaste wurde über einem Objekt (im Bei-spiel der Bühne) gedrückt.

MouseEvent.MOUSE_UP stage.addEventListener(MouseEvent.MOUSE_UP,

mouseUpHandler);

function mouseUpHandler(e:MouseEvent):void {

trace("Die Maustaste wurde losgelassen.");

}

Die linke Maustaste wurde über einem Objekt (im Beispiel der Bühne) losge-lassen.

Maus außerhalb der BühneÜber das Ereignis Event.MOUSE_LEAVE können Sie feststellen, ob der Mauszeiger aus dem Bereich der Bühne des Flash-Films heraus-bewegt wurde (nur im Browser). Beispiel:stage.addEventListener

(Event.MOUSE_LEAVE,

mouseLeaveHandler);

function mouseLeaveHandler

(e:Event):void {

trace("Mauszeiger hat die

Bühne verlassen.");

}

GE Tabelle 20.1Ereignisse für die Maussteuerung

Page 46: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.2 Kollisionserkennung | 789

Ereignis Beispiel Beschreibung

MouseEvent.MOUSE_MOVE stage.addEventListener(MouseEvent.MOUSE_MOVE,

mouseMoveHandler);

function mouseMoveHandler(e:MouseEvent):void {

mc.x = mouseX;

mc.y = mouseY;

e.updateAfterEvent();

}

Der Mauszeiger wurde bewegt.

MouseEvent.MOUSE_WHEEL stage.addEventListener(MouseEvent.MOUSE_WHEEL,

mouseWheelHandler);

function mouseWheelHandler(e:MouseEvent):void {

mc.y += e.delta*-1;

}

Wird ausgelöst, wenn das Mausrad der Maus benutzt wurde. (Auf Macs funktio-niert das so direkt nicht.)

MouseEvent.ROLL_OVER mc.addEventListener(MouseEvent.ROLL_OVER,

rollOverHandler);

function rollOverHandler(e:MouseEvent):void {

trace("RollOver: "+e.currentTarget.name);

}

Wird ausgelöst, wenn der Mauszeiger über ein Objekt bewegt wird.

MouseEvent.ROLL_OUT mc.addEventListener(MouseEvent.ROLL_OUT,

rollOutHandler);

function rollOutHandler(e:MouseEvent):void {

trace("RollOut: "+e.currentTarget.name);

}

Wird ausgelöst, wenn der Mauszeiger aus einem Ob-jekt heraus bewegt wird.

GE Tabelle 20.1Ereignisse für die Maussteuerung (Forts.)

20.2  Kollisionserkennung

Ein Hauptbestandteil von vielen Spielen ist die sogenannte Kol-lisionserkennung. Eine präzise Kollisionserkennung ist häufig ein entscheidender Erfolgsfaktor für ein gutes Spiel. Es gibt ver-schiedene Techniken, um Kollisionserkennungen durchzuführen. Einige dieser Techniken werden im Folgenden erläutert.

20.2.1  Einfache Kollisionserkennung mit hitTestObject und hitTestPoint

In ActionScript 3 gibt es für eine einfache Kollisionserkennung die Methoden hitTestObject und hitTestPoint, die die Methode hitTest (ActionScript 1 und 2) abgelöst haben. Die Methoden gehören zur DisplayObject-Klasse und können mit allen Klassen, die die DisplayObject-Klasse erweitern (Sprite, MovieClip, Bit-map etc.), verwendet werden.

KollisionserkennungSinn und Zweck einer Kollisions-erkennung ist es, zu überprüfen, ob ein grafisches Objekt ein oder mehrere andere grafische Objekte berührt oder durchdringt.

Page 47: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

790  | 20 Spieleprogrammierung

Kollisionserkennung von Begrenzungsrahmen | Sie können über die Methode hitTestObject überprüfen, ob sich Begren-zungsrahmen von Anzeigeobjekten überschneiden. Bei rechtecki-gen Formen funktioniert das einwandfrei 1. Sobald jedoch eine der Formen nicht rechteckig ist, schlägt die Kollisionserkennung fehl bzw. ist je nach Form mehr oder weniger genau 2. Eine Kollision findet bereits dann statt, wenn sich die Begrenzungsrah-men überschneiden. Da sich aber die Form des Begrenzungsrah-mens und die tatsächliche Form des Objekts unterscheiden, führt das meist zu keinem akzeptablen Ergebnis.

GE Abbildung 20.2Links: Die Formen sind rechteckig, die Kollisionserkennung funktioniert. Rechts: Eine Form ist rund, die Kollisionserkennung ist ungenau.

Angenommen, Sie möchten eine Kollisionserkennung zwischen zwei MovieClips mit den Instanznamen »mc0« und »mc1« durch-führen. Das folgende Beispiel zeigt, wie Sie feststellen können, ob sich die Begrenzungsrahmen berühren oder durchdringen:

mc0.addEventListener(Event.ENTER_FRAME,enterFrameHandler);

function enterFrameHandler(e:Event):void {

e.currentTarget.x = mouseX;

e.currentTarget.y = mouseY;

if(e.currentTarget.hitTestObject(mc1)) {

trace("Kollision");

} else {

trace("Keine Kollision");

}

}

Kollisionserkennung von bestimmten Punkten | Die Methode hitTestPoint bietet eine weitere Möglichkeit für eine Kollisions-erkennung. Mit der Methode können Sie überprüfen, ob die Pixel eines Objekts (die tatsächliche Form) oder der Begrenzungsrah-men eines Objekts mit einem bestimmten Punkt auf der Bühne kollidiert.

Begrenzungsrahmen

Der Begrenzungsrahmen eines MovieClips kann sich von der eigentlichen Form des MovieC-lip-Inhalts unterscheiden. Wenn Sie einen MovieClip in der Ent-wicklungsumgebung auswählen, wird der Begrenzungsrahmen durch einen hellblauen Auswahl-rahmen angezeigt.

a

b

20_Spieleprogrammierung\Kollision_hitTestObject\beispiel.fla

Page 48: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.2 Kollisionserkennung | 791

Angenommen, Sie möchten überprüfen, ob der Begrenzungs-rahmen eines MovieClips mit dem Instanznamen »mc« mit dem Mittelpunkt der Bühne kollidiert oder nicht. Dazu folgendes Bei-spiel:

mc0.addEventListener(Event.ENTER_FRAME,enterFrameHandler);

function enterFrameHandler(e:Event):void {

var xPos:Number = stage.stageWidth/2;

var yPos:Number = stage.stageHeight/2;

e.currentTarget.x=mouseX;

e.currentTarget.y=mouseY;

if (e.currentTarget.hitTestPoint(xPos,yPos,false)) { trace("Kollision");

} else {

trace("Keine Kollision");

}

}

Die Methode hitTestPoint erwartet drei Argumente:EE x-Koordinate des Punktes auf der BühneEE y-Koordinate des Punktes auf der BühneEE shapeFlag (default: false): Gibt an, ob die Pixel des Objekts

(true) oder der Begrenzungsrahmen des Objekts (false) zur Kollisionserkennung verwendet werden sollen.

Wenn Sie statt des Begrenzungsrahmens die tatsächliche Form des Objekts für die Kollisionserkennung verwenden möchten, müssen Sie den dritten Parameter der Methode auf true setzen. Dazu folgendes Beispiel:

mc0.addEventListener(Event.ENTER_FRAME,enterFrameHandler);

function enterFrameHandler(e:Event):void {

var xPos:Number = stage.stageWidth/2;

var yPos:Number = stage.stageHeight/2;

e.currentTarget.x=mouseX;

e.currentTarget.y=mouseY;

if (e.currentTarget.hitTestPoint(xPos,yPos,true)) { trace("Kollision");

} else {

trace("Keine Kollision");

}

}

20_Spieleprogrammierung\Kollision_hitTestPoint\­beispiel_01.fla

20_Spieleprogrammierung\Kollision_hitTestObject\­beispiel_02.fla

Page 49: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

792  | 20 Spieleprogrammierung

20.2.2  Pixelbasierte KollisionserkennungNeben den bereits vorgestellten Kollisionserkennungen können Sie über die Methode hitTest der BitmapData-Klasse auch eine pixelbasierte Kollisionserkennung durchführen. Eine pixelbasierte Kollisionserkennung ist notwendig, wenn beispielsweise Formen eingesetzt werden, die sich deutlich vom rechteckigen Begren-zungsrahmen eines MovieClips unterscheiden. In einem solchen Fall wäre die zuvor erläuterte Kollisionserkennung zu ungenau. Die Anwendung einer pixelbasierten Kollisionserkennung ist mit-unter etwas kompliziert. Um die Methode hitTest anwenden zu können, sind zunächst folgende zwei Punkte zu beachten:

EE Anzeigeobjekte wie Sprites, MovieClips und auch Bitmaps müssen zunächst in eine BitmapData umgewandelt werden, da die hitTest-Methode eine Methode der BitmapData-Klasse ist und nur auf Objekte dieser Klasse anwendbar ist.

EE Wenn Anzeigeobjekte transformiert, d. h. rotiert, skaliert oder geneigt werden, funktioniert die Kollisionserkennung über hitTest so nicht richtig. Für eine Kollisionserkennung mit transformierten Objekten sind zusätzliche Routinen notwen-dig, die später noch erläutert werden.

Umwandlung von Anzeigeobjekten in eine BitmapDataAngenommen, Sie haben auf der Bühne eines Flash-Films zwei MovieClips erstellt. Der erste MovieClip »myCircle« besitzt eine Kreisform. Der zweite MovieClip »myStar« besitzt eine Stern-form. Auf Basis der Inhalte der MovieClips können Sie wie folgt entsprechende BitmapData-Objekte erzeugen:

1: // Circle

2: var circleRect:Rectangle=myCircle.getBounds(this);

3: var circleBmpData=new BitmapData(circleRect.width,

circleRect.height,true,0);

4: circleBmpData.draw(myCircle);

5: // Star

6: var starRect:Rectangle=myStar.getBounds(this);

7: var starBmpData=new BitmapData(starRect.width,

starRect.height,true,0);

8: starBmpData.draw(myStar);

In Zeile 2 wird der Begrenzungsrahmen des MovieClips »my Circle« über die Methode getBounds ermittelt und der Variablen circle Rect zugewiesen. In Zeile 3 wird ein neues BitmapData-Objekt erzeugt. Die Breite und die Höhe des BitmapData-Objekts werden auf Basis der Breite und der Höhe des zuvor definierten

AnmerkungDa es sich um eine pixelbasierte Kollisionserkennung handelt, kön-nen die beiden MovieClips des Beispiels natürlich auch andere beliebige Vektorformen bein-halten.

Registrierungspunkte der  MovieClipsDie Registrierungspunkte der bei-den MovieClips in diesem Beispiel müssen links oben sein.

Page 50: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.2 Kollisionserkennung | 793

Rectangle-Objekts festgelegt. Der Hintergrund der BitmapData wird auf transparent (true) gesetzt. Die Hintergrundfarbe wird auf Schwarz (0) festgelegt.

Anschließend werden in Zeile 4 über die Methode draw die Pixel des MovieClips »myCircle« in die BitmapData übernommen (nachgezeichnet). Es wird also eine visuelle Kopie des Inhalts des MovieClips »myCircle« in der BitmapData gespeichert. In Zeile 6 bis 8 wird analog dazu die Sternform in eine BitmapData starBmpData übertragen.

Kollisionserkennung mit hitTest | Die Methode hitTest der BitmapData-Klasse hat folgende formelle Syntax:

firstObject.hitTest(firstPoint:Point,

firstAlphaThreshold:uint, secondObject:Object,

secondBitmapDataPoint:Point = null,

secondAlphaThreshold:uint = 1):Boolean

Die Methode wird von einem der beiden Objekte aufgerufen, die auf eine Kollision hin überprüft werden (hier: firstObject). Die Methode sieht fünf Parameter vor:

EE firstPoint: der Punkt der linken oberen Ecke des ersten Anzei-geobjekts

EE firstAlphaThreshold: der niedrigste Alphawert des ersten Objekts, der bezüglich der Kollisionserkennung als deckend (undurchsichtig) bewertet wird

EE secondObject: Das zweite Objekt, auf das die Kollisionserken-nung angewendet wird. Zum Beispiel ein Rectangle-, Point-, Bitmap- oder BitmapData-Objekt.

EE secondBitmapDataPoint: der Punkt der linken oberen Ecke des zweiten Anzeigeobjekts

EE secondAlphaThreshold: der niedrigste Alphawert des zweiten Objekts, der bezüglich der Kollisionserkennung als deckend (undurchsichtig) bewertet wird

Übertragen auf das zuvor beschriebene Beispiel, lässt sich die Methode hitTest wie folgt anwenden, um eine pixelbasierte Kollisionserkennung durchzuführen:

1: addEventListener(Event.ENTER_FRAME,

enterFrameHandler);

2: function enterFrameHandler(e:Event):void {

3: myStar.x=mouseX;

4: myStar.y=mouseY;

getBoundsDie Methode getBounds gibt den Begrenzungsrahmenbereich des angegebenen Anzeigeobjekts zu-rück. Der zurückgegebene Wert bezieht sich auf das Koordinaten-system, das als Argument (in die-sem Beispiel: this) an die Me-thode übergeben wird.

Page 51: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

794  | 20 Spieleprogrammierung

5: var starPoint:Point=new Point(myStar.x,myStar.y);

6: var circlePoint:Point=new Point(myCircle.x,

myCircle.y);

7: if (starBmpData.hitTest(starPoint,255,circleB

mpData,circlePoint,255)) {

8: trace("hit");

9: myCircle.alpha=0.5;

10: } else {

11: myCircle.alpha=1;

12: }

13: }

Zunächst wird an der Bühne in Zeile 1 ein ENTER_FRAME-Ereignis-Listener registriert. Der »Stern«-MovieClip wird auf die Koordi-naten des Mauszeigers positioniert (Zeile 3 und 4). Es werden zwei Point-Objekte mit den Koordinaten der jeweiligen Movie-Clips initialisiert (Zeile 5 und 6). In Zeile 7 wird dann mithilfe der hitTest-Methode die Kollisionserkennung durchgeführt. Der Wert des firstAlphaThreshold entspricht hier 255 (gleich 0xFF), also dem Alphawert 1. Farbtöne mit niedrigerem Alpha-wert werden nicht berücksichtigt. Findet eine Kollision statt, wird der Alphawert des »Kreis«-MovieClips auf 0,5 gesetzt. Anderen-falls wird der Alphawert auf 1 gesetzt. Das vollständige Beispiel fi nden Sie auf der DVD im Verzeichnis 20_Spieleentwicklung\Kol-lision_hitTest\Kollision_hitTest.fl­a.

Pixelbasierte Kollisionserkennung mit transformierten Ob -jekten | Wie zuvor erwähnt, lässt sich die pixelbasierte Kollisi-onserkennung so nicht auf transformierte Objekte anwenden. Sie können das selbst überprüfen, wenn Sie beispielsweise den Kreis-MovieClip vor der Kollisionserkennung wie folgt skalieren (die Kollisionserkennung ist dann sehr ungenau):

myCircle.scaleX = 0.5;

myCircle.scaleY = 0.5;

Abbildung 20.3E E

Die beiden Anzeigeobjekte kollidieren.

20_Spieleprogrammierung\Kollision_hitTest\Kollision_hitTest.fl­a

Page 52: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.2 Kollisionserkennung | 795

Damit die Kollisionserkennung auch mit Objekten funktioniert, die zur Laufzeit transformiert wurden bzw. werden, müssen einige Änderungen am Code vorgenommen werden. Die wesent-liche Änderung ist, dass hier eine Transformationsmatrix für beide Anzeigeobjekte defi niert wird und diese dann bei der Generie-rung der jeweiligen BitmapData an die Methode draw überge-ben wird. Das bewirkt, dass Transformationen in die BitmapData übernommen und dort berücksichtigt werden.

Damit Transformationen zur Laufzeit berücksichtigt werden können, muss im Gegensatz zum vorangegangenen Beispiel die jeweilige BitmapData der Anzeigeobjekte wiederholt zur Lauf-zeit generiert werden. Der folgende Code zeigt die Anwendung (wichtige Codestellen sind fett gesetzt):

1: addEventListener(Event.ENTER_FRAME,

enterFrameHandler);

2: function enterFrameHandler(e:Event):void {

3: // Circle

4: var circleRect:Rectangle=myCircle.

getBounds(this);

5: var circleBmpData=new BitmapData(circleRect.

width,circleRect.height,true,0);

6: var circleOffset:Matrix = myCircle.transform.

matrix;

7: circleOffset.tx = myCircle.x - circleRect.x;

8: circleOffset.ty = myCircle.y - circleRect.y;

9: circleBmpData.draw(myCircle,circleOffset);

10: // Star

11: var starRect:Rectangle=myStar.getBounds(this);

12: var starBmpData=new BitmapData(starRect.

width,starRect.height,true,0);

13: var starOffset:Matrix = myStar.transform.

matrix;

14: starOffset.tx = myStar.x - starRect.x;

15: starOffset.ty = myStar.y - starRect.y;

FE Abbildung 20.4Die Kollisionserkennung funktio-niert nicht richtig mit transfor-mierten Objekten.

BitmapData.disposeDie Methode dispose der Bit-mapData-Klasse sorgt dafür, dass der von der BitmapData verwen-dete Speicher freigegeben wird. Die Breite und Höhe der Bitmap-Data werden dabei auf »0« zu-rückgesetzt. In dem gezeigten Beispiel wird die Methode ange-wendet, nachdem die Kollisions-erkennung durchgeführt wurde. Da die BitmapData-Objekte bei jedem Durchlauf neu initialisiert werden, ist es sinnvoll, den Speicher dann auch wieder frei-zugeben.

Page 53: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

796  | 20 Spieleprogrammierung

16: starBmpData.draw(myStar,starOffset);

17: myStar.x=mouseX;

18: myStar.y=mouseY;

19: myStar.scaleX = myStar.scaleY = 0.5;

20: var starPoint:Point=new Point(myStar.x,myStar.y);

21: var circlePoint:Point=new Point(myCircle.x,

myCircle.y);

22: if (starBmpData.hitTest(starPoint,255,circleB

mpData,circlePoint,255)) {

23: trace("hit");

24: myCircle.alpha=0.5;

25: } else {

26: myCircle.alpha=1;

27: }

28: starBmpData.dispose();

29: circleBmpData.dispose();

30: }

Das Beispiel fi nden Sie auf der DVD im Verzeichnis 20_Spiele-entwicklung\Kollision_hitTest_transformed\Kollision_hitTest_trans-formed.fl­a.

20.2.3  Positionsbasierte Kollisionserkennung Sie haben jetzt verschiedene Techniken zur Kollisionserkennung zwischen Objekten bzw. Punkten kennengelernt. Häufi g gibt es einen fest defi nierten Spielbereich, in dem sich Objekte bewe-gen. Kollidiert ein Objekt mit einem Rand des Bereichs, wie z. B. mit den Rändern der Bühne, wird es entweder entfernt oder es ändert seine Bewegungsrichtung. Für diese Art der Kollisionser-kennung ist es wichtig, den Registrierungspunkt eines MovieClips zu berücksichtigen. Angenommen, ein Rechteck wird in einen MovieClip »mc« umgewandelt. Der Registrierungspunkt wird bei der Konvertierung auf links oben eingestellt 1.

Abbildung 20.5E E

Jetzt funktioniert die Kollisionser-kennung auch mit transformierten Objekten.

20_Spieleprogrammierung\Kollision_hitTest_transformed\Kollision_hitTest_transformed.fl­a

Page 54: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.2 Kollisionserkennung | 797

Um abzufragen, ob der MovieClip den linken Rand eines Bereichs überschreitet, müssen Sie einfach die x-Position des MovieClips 2 mit der x-Position des linken Rands vergleichen 3. Wenn der Spielbereich der Bühne entspricht, wäre folgende Abfrage sinnvoll:

if(mc.x < 0) {

// Der linke Randbereich wurde überschritten.

}

Wenn Sie prüfen möchten, ob sich der MovieClip 4 über die rechte Seite des Randbereichs 5 bewegt hat, müssen Sie die Breite des MovieClips zur Position des MovieClips hinzuaddieren und das Resultat mit der Position des rechten Randbereichs vergleichen:

if(mc.x+mc.width > stage.stageWidth) {

// Der rechte Randbereich wurde überschritten.

}

rechts:

links:mc.x

0

mc.x

0

mc.x+mc.width

stage.stageWidth

mc.x+mc.width

stage.stageWidth

Analog dazu müssen Sie für eine Kollisionsabfrage mit dem obe-ren Rand ausschließlich die y-Koordinaten vergleichen:

if(mc.y < 0) {

// Der obere Randbereich wurde überschritten.

}

FE Abbildung 20.6Registrierung des MovieClips

FE Abbildung 20.7Kollisionserkennung mit linkem und rechtem Randbereich

1

b

c

d

e

Page 55: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

798  | 20 Spieleprogrammierung

Für eine Kollisionserkennung mit dem unteren Rand müssen Sie zur y-Position die Höhe des MovieClips dazurechnen:

if(mc.y+mc.height > stage.stageHeight) {

// Der untere Randbereich wurde überschritten.

}

mc.y+mc.height

stage.stageHeight

mc.y+mc.height

unten:

oben:

mc.y0 mc.y 0

stage.stageHeight

Je nach Spiel und Spielelement fällt die Reaktion auf eine Kol-lision unterschiedlich aus. Eine Reaktion wäre, dass ein Objekt abprallt und sich anschließend in die entgegengesetzte Richtung bewegt. Der englische Begriff für ein solches Verhalten ist Boun-cing (engl. für »abprallen«).

Angenommen, ein MovieClip bewegt sich mit einer konstan-ten Geschwindigkeit vx mithilfe eines Event.ENTER_FRAME-Ereig-nisses Bild für Bild um jeweils fünf Pixel nach rechts 1. Beim Ren-dern des nächsten Bildes wird das Objekt mit einem Randbereich kollidieren – dabei wird es sich sogar über den Bereich hinaus-bewegen 2. Für das Bouncing wird daraufhin wie folgt reagiert:1. Zunächst positionieren Sie den MovieClip genau am entspre-

chenden Kollisionsbereich 3.2. Dann ändern Sie die Bewegungsrichtung, indem Sie die

Geschwindigkeit mit –1 multiplizieren 4. Entsprach die Geschwindigkeit vx vor der Kollision 5, wird sie nach der Neu-positionierung auf –5 gesetzt. Der MovieClip bewegt sich also anschließend nach links in die entgegengesetzte Richtung.

vx = 5;mc.x+=vx;

vx = 5*-1;mc.x+=vx;

3px

Abbildung 20.8E E

Kollision mit oberem und unterem Randbereich

Abbildung 20.9E E

Das Bouncing-Prinzip

a

b 3 d

Page 56: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.3 Zeit | 799

Schritt für Schritt: Kollisionserkennung mit Randbereichen und BouncingDer Workshop erläutert, wie Sie eine Kollisionserkennung mit den Randbereichen der Bühne durchführen können und wie Sie auf eine mögliche Kollision mit Bouncing reagieren.

1 Flash-Film öffnenÖffnen Sie den Flash-Film 20_Spieleprogrammierung\Kollision_Randbereiche\KollisionRandbereiche_01.fla.

2 Kollisionserkennung und BouncingWeisen Sie dem ersten Schlüsselbild auf der Ebene »Actions« fol-genden Code zu:

var vx:Number=5;

var vy:Number=3;

var links:Number=0;

var rechts:Number=stage.stageWidth-mc.width;

var oben:Number=0;

var unten:Number=stage.stageHeight-mc.height;

mc.addEventListener(Event.ENTER_FRAME,moveClip);

function moveClip(e:Event):void {

e.currentTarget.x+=vx;

e.currentTarget.y+=vy;

if (e.currentTarget.x<links||e.currentTarget.x>rechts) {

vx*=-1;

}

if (e.currentTarget.y<oben||e.currentTarget.y>unten) {

vy*=-1;

}

}

Sobald der MovieClip einen Randbereich überschreitet, wird die Bewegungsrichtung durch Multiplikation mit –1 umgekehrt.

3 Film testenTesten Sie den Flash-Film über (Strg)/(°)+(¢). N

20.3  Zeit

Viele Spiele sind zeitlich begrenzt oder haben zumindest eine Zeit-anzeige. Beides lässt sich über die sogenannte getTimer-Funktion umsetzen. Die Funktion gibt die Zeit in Millisekunden zurück, die

20_Spieleprogrammierung\Kollision_Randbereiche\Kollision-Randbereiche_01.fla

Ergebnis der Übung:20_Spieleprogrammierung\­Kollision_Randbereiche\Kollision-Randbereiche_02.fla

Page 57: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

800  | 20 Spieleprogrammierung

seit dem Start des Flash-Films vergangen ist. Angenommen, Sie möchten in einem Spiel die abgelaufene Zeit anzeigen. Hierfür müssten Sie zunächst am Anfang die Zeit ermitteln, die seit dem Start des Flash-Films bis zu diesem Zeitpunkt vergangen ist. Die Zeit wird dann z. B. der Variablen time0 zugewiesen:

var time0:Number = getTimer();

Dann könnten Sie z. B. mithilfe des Ereignisses Event.ENTER_FRAME der Bühne (Stage-Objekt) die abgelaufene Zeit wie folgt ermitteln; die Differenz der beiden Zeitwerte entspricht dann der abgelaufenen Zeit:

var time0:Number=getTimer();

stage.addEventListener(Event.ENTER_FRAME,getTime);

function getTime(e:Event):void {

var time1:Number=getTimer();

var zeit:Number=time1-time0;

trace(zeit);

}

Um die Zeit abgerundet in Sekunden anzuzeigen, müssen Sie die Zeit durch 1.000 dividieren und über Math.floor runden:

var zeit:Number = Math.floor((time1-time0)/1000);

Zeitlimit | Angenommen, Sie möchten die Spielzeit auf 100 Sekunden begrenzen. Ist die Spielzeit verstrichen, soll das Spiel beendet werden. Ermitteln Sie dazu einfach die Differenz zwi-schen abgelaufener Zeit und dem gewünschten Zeitlimit wie folgt:

var timeLimit:Number = 100;

var time0:Number=getTimer();

stage.addEventListener(Event.ENTER_FRAME,getTime);

function getTime(e:Event):void {

var time1:Number=getTimer();

var zeit:Number = Math.floor((time1-time0)/1000);

var restzeit:Number = timeLimit-zeit;

trace("Es bleiben noch: "+restzeit+" Sekunden.");

if(restzeit <0) {

stage.removeEventListener(Event.ENTER_FRAME.

getTime);

}

}

Alternative

Anstatt eines Event.ENTER_FRAME-Ereignisses, das sich nach der Bildrate eines Flash-Films richtet, können Sie auch ein Ti-mer-Objekt verwenden, um die abgelaufene Zeit zu ermitteln. Dazu folgendes Beispiel:

var time0:Number=getTimer();

var myTimer:Timer = new

Timer(100,int.MAX_VALUE);

myTimer.addEventListener

(TimerEvent.TIMER,getTime);

myTimer.start();

function getTime(e:Event):

void {

var time1:Number=getTimer();

var zeit:Number = Math.

floor((time1-time0)/1000);

trace(zeit);

}

Page 58: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.4 Daten lokal speichern mit einem SharedObject | 801

Sollte der Wert der Variablen restzeit unter 0 fallen, wird der zuvor registrierte Ereignis-Listener wieder entfernt. Das führt dazu, dass die Funktion getTime dann nicht mehr weiter aufge-rufen wird.

20.4  Daten lokal speichern mit einem SharedObject

In vielen Spielen lässt sich zu Beginn, z. B. für einen Highscore, ein Spielername eingeben. Damit der Spielername und gegebe-nenfalls weitere Daten nicht bei jedem Neustart neu eingegeben werden müssen, lassen sich Daten über ein SharedObject lokal auf dem Client-Rechner speichern. Ein SharedObject funktioniert ähnlich wie ein Browser-Cookie .

Größe des lokalen Speichers | Sie sollten jedoch beachten, dass der Flash Player die Datenmenge standardmäßig auf 100 KB begrenzt. Der Benutzer kann die Limitierung des verfügbaren Speichers selbst erhöhen, reduzieren oder die Nutzung von loka-lem Speicher vollständig unterbinden.

Die entsprechenden Einstellungen fi nden Sie im Kontextmenü des Flash Players. Öffnen Sie also einen Flash-Film, klicken Sie mit der rechten Maustaste, um das Kontextmenü zu öffnen, und wählen Sie den Menüpunkt Einstellungen 1.

Im Reiter Lokaler Speicher 4 lässt sich sowohl die erlaubte Speichermenge zur Speicherung der Daten durch Verschieben

des Reglers 2 limitieren als auch die Speicherung durch Aktivierung des Optionsfelds Nie 3 gänz-lich abschalten. Sollte der Benutzer die Speichermög-lichkeit deaktivieren, funk-tioniert das Speichern von Daten über ein Shared-Object nicht mehr.

Weitere AnwendungsbereicheSharedObjects werden häufi g auch zum Speichern von Daten für Offl ine-Anwendungen (CD, DVD, USB etc.) genutzt. Ein SharedObject lässt sich beispiels-weise auch dazu verwenden, ei-nen Highscore lokal auf einem System, z. B. bei einem Spiel für CD/DVD, zu speichern. Ein Share-dObject lässt sich natürlich nicht nur für Spiele nutzen. Sie können beliebige Daten, z. B. Daten eines Adressbuchs, lokal speichern.

FE Abbildung 20.10Das Kontextmenü Einstellungen

Weitere Einstellungsmöglich-keiten

In dem Dialogfenster Einstel-lungen für Adobe Flash Player können Sie zusätzlich einstellen, ob Sie dem Flash-Film den Zu-griff auf Ihr Mikrofon und Ihre Webcam erlauben oder nicht.

GE Abbildung 20.11Einstellungen für den lokalen Speicher

b

c

d

Page 59: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

802  | 20 Spieleprogrammierung

Private Browsing im Flash Player 10.1

Seit dem Flash Player 10.1 wird das Private­Browsing (engl. für »priva-tes Surfen«) des Browsers berück-sichtigt. Das hat zur Folge, dass der Flash Player im Browser, der den privaten Modus angeschaltet hat, SharedObjects nach Verlassen des privaten Modus automatisch verwirft.

Sie müssen also zukünftig verstärkt damit rechnen, dass SharedObjects gegebenenfalls nicht vorhanden sind. Folgende Browser unterstüt-zen aktuell den privaten Modus:

EE Internet Explorer 8.0EE Mozilla Firefox 3.5EE Apple Safari 2.0EE Google Chrome 1.0

SharedObject initialisierenBevor Sie Daten lokal speichern können, müssen Sie zunächst ein SharedObject initialisieren und referenzieren. Dazu dient die Methode getLocal, die als Argument einen Bezeichner erwartet, unter dem die Daten lokal gespeichert werden:

var data_so:SharedObject = SharedObject.

getLocal("data");

Falls das lokal gespeicherte SharedObject data nicht bereits exis-tiert, wird es automatisch erzeugt. Anschließend können Sie dem Objekt über die Eigenschaft data Daten zuweisen:

data_so.data.spielername = "Max";

Damit die Daten sofort auf der Festplatte gespeichert werden, müssen Sie anschließend die Methode flush des SharedObjects aufrufen. Anderenfalls werden die Daten erst auf die Festplatte geschrieben, wenn die Verbindung zum lokalen Objekt beendet wird, z. B. wenn der Flash-Film gestoppt wird:

data_so.flush();

Über die Methode clear können Sie alle Daten eines SharedOb-jects auch wieder entfernen:

data_so.clear();

Lokale Daten lesen | Um Daten eines SharedObjects zu lesen, müssen Sie es zunächst wieder referenzieren:

var data_so:SharedObject = SharedObject.

getLocal("data");

SOL-DateienDaten, die lokal über ein Shared-Object gespeichert werden, wer-den auf der Festplatte in Dateien mit der Dateiendung .sol abge-legt. SOL-Dateien lassen sich be-quem über spezielle Editoren wie z. B. SolVE (http://solve.source-forge.net/) für Windows/Mac ein-sehen und editieren.

Datenmenge bestimmen

Über die Eigenschaft size eines SharedObjects können Sie die bereits gespeicherte Daten-menge (in Bytes) bestimmen

trace(data_so.size);

Um diese in KB umzurechnen, müssen Sie den Wert durch 1.024 dividieren:

var mySize:Number = data_

so.size/1024;

trace(mySize);

Page 60: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.4 Daten lokal speichern mit einem SharedObject | 803

Anschließend können Sie auf mögliche Eigenschaftswerte der Eigenschaft data wie folgt zugreifen:

trace(data_so.data.spielername);

Übrigens können Sie auch Werte anderer Datentypen als String speichern. So könnten Sie z. B. ein Array userdata inklusive aller Array-Felder speichern und auslesen. Dazu folgendes Beispiel:

var data_so:SharedObject = SharedObject.

getLocal("data");

var userdata:Array = new Array({spielername:"Max",

punkte:100,spielername:"John",punkte:1000});

data_so.data.user_arr = userdata;

data_so.flush();

trace(data_so.data.user_arr[0].spielername);

Schritt für Schritt: Spielername lokal speichern und lesenIn diesem Workshop wird gezeigt, wie Sie Daten mithilfe eines SharedObjects lokal speichern und auslesen können.

1 Film öffnenÖffnen Sie den Flash-Film 20_Spieleprogrammierung\SharedOb-ject\SharedObject_01.fla.

2 Daten lokal speichernWeisen Sie dem ersten Schlüsselbild auf der Ebene »Actions« zunächst folgenden Code zu:

weiter_mc.buttonMode = true;

weiter_mc.addEventListener(MouseEvent.CLICK,clickHandler);

function clickHandler(e:MouseEvent):void {

if(input_txt.text != "") {

writeData();

gotoAndStop(2);

}

}

function writeData():void {

var data_so:SharedObject = SharedObject.

getLocal("data");

data_so.data.spielername = input_txt.text;

data_so.flush();

}

20_Spieleprogrammierung\SharedObject\SharedObject_01.fla

Page 61: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

804  | 20 Spieleprogrammierung

In einem Eingabetextfeld können Sie einen Spielernamen ein-geben, der dann per Mausklick auf den MovieClip »weiter_mc« lokal in einem SharedObject gespeichert wird.

3 Daten auslesen und ausgebenDamit der Spielername automatisch im Eingabetextfeld erscheint, wird er über die Funktion readData, falls vorhanden, ausgele-sen. Ergänzen Sie den Code dazu im ersten Schlüsselbild auf der Ebene »Actions« wie folgt:

function readData():void {

var data_so:SharedObject = SharedObject.

getLocal("data");

if (data_so.data.spielername != undefined) {

input_txt.text = data_so.data.spielername;

}

}

readData();

stop();

4 Zurück auf Bild 1 springenWählen Sie das zweite Schlüsselbild auf der Ebene »Actions« aus, und weisen Sie ihm folgenden Code zu:

back_mc.buttonMode = true;

back_mc.addEventListener(MouseEvent.CLICK,goBack);

function goBack(e:MouseEvent):void {

gotoAndStop(1);

}

stop();

5 Film testenTesten Sie den Flash-Film über (Strg)/(°)+(¢). N

20.5  Asteroids -Spiel

Sie haben jetzt einige Grundlagen kennengelernt, die Ihnen bei der Spieleprogrammierung helfen können. Je nach Spielprinzip eines Spiels werden Sie verschiedene Aufgaben lösen und sich mit weiteren Techniken, die hier nicht erläutert wurden, beschäf-tigen.

Um diesen Themenbereich abzuschließen, wird im Folgenden gezeigt, wie Sie mit einfachen Mitteln ein vollständiges Spiel ent-

Spielspaß und Spieltechnik

Wenn Sie vorhaben, selbst ein Spiel zu entwickeln, nehmen Sie sich die Zeit, vorher darüber nachzudenken, welche Techni-ken für die Umsetzung erforder-lich sind. Vermeintlich einfache Spiele wie z. B. ein Tetris-Clone erfordern eventuell komplexere Techniken, als zunächst ange-nommen. Die Komplexität der Technik hat meist nicht viel mit dem resultierenden Spielspaß zu tun. Technisch einfache Spiele können ebenso viel Spaß ma-chen wie Spiele, die komplexe Techniken einsetzen.

GE Abbildung 20.12Der eingegebene Spielernamen erscheint auch nach einem Neu-start des Flash-Films, bis Sie ihn wieder im Eingabetextfeld ändern.

Ergebnis der Übung:20_Spieleprogrammierung\Shared-Object\SharedObject_02.fl­a

Page 62: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.5 Asteroids-Spiel | 805

wickeln können. Dabei lernen Sie nicht nur die zuvor genannten Erläuterungen in der Praxis anzuwenden, sondern u. a. auch, wie Sie die Struktur für ein Spiel anlegen können. Ergänzend dazu wird am Ende erläutert, wie sich ein Highscore für ein Spiel erstellen lässt.

20.5.1  StartbildschirmZunächst wird der Startbildschirm erstellt, über den der Spieler seinen Spielernamen festlegen kann. Alle grafischen Elemente des Spiels und die Struktur des Flash-Films wurden bereits an gelegt. Öffnen Sie den Flash-Film 20_Spieleprogrammierung\Asteroid\Asteroids_01.fla.

Weisen Sie dem ersten Schlüsselbild auf der Ebene »Actions« zunächst folgenden Code zu:

1: var username:String;

2: start_mc.buttonMode=true;

3: start_mc.addEventListener(MouseEvent.CLICK,

clickHandler);

4: function clickHandler(e:MouseEvent):void {

5: if (name_txt.text!="" && name_txt.length>1) {

6: username=name_txt.text;

7: gotoAndStop("Spiel");

8: }

9: }

Als Erstes wird in Zeile 1 die Variable username initialisiert, der in Zeile 6, sobald der Spieler einen Namen in das Textfeld »name_

20_Spieleprogrammierung\Asteroid\Asteroids_01.fla

FEGE Abbildung 20.13Die Ausgangsbasis

Page 63: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

806  | 20 Spieleprogrammierung

txt« eingetragen hat, der Spielername zugewiesen wird. Sobald der Spieler einen Spielernamen eingegeben hat und auf den MovieClip mit dem Instanznamen »start_mc« klickt, springt der Lesekopf der Hauptzeitleiste auf das Bild mit dem Bildbezeichner Spiel (Zeile 7).

20.5.2  Soundobjekte initialisierenIn der Bibliothek im Ordner Sounds finden Sie verschiedene Sounds, die jeweils mit einer Klasse verknüpft wurden. So wurde der Sound explosion.wav beispielsweise mit der Klasse Explo-sion verknüpft. Sie können den Sound dann über ein Objekt der Klasse mit ActionScript ansteuern. Ergänzen Sie den Code im ers-ten Schlüsselbild der Ebene »Actions« um folgende Zeilen:

1: // Sounds

2: var myLoop:Loop = new Loop();

3: myLoop.play(0,int.MAX_VALUE);

4: var myGunSound:GunSound = new GunSound();

5: var myExplosion:Explosion = new Explosion();

6: var myEnergySound:EnergySound = new EnergySound();

7: stop();

Soundobjekte von unterschiedlichen Klassen werden an dieser Stelle einmalig initialisiert. Sie werden später beim Auftreten eines Spielereignisses abgespielt. Zu Beginn wird in Zeile 2 ein Objekt der Klasse Loop initialisiert, und der Sound wird über die Methode play gestartet (Zeile 3). Es handelt sich dabei um einen Soundloop, der als Hintergrundmusik dient.

20.5.3  Spielvariablen initialisierenIm Bild mit dem Bildbezeichner Spiel wird die Logik des Spiels integriert. Wählen Sie das Schlüsselbild auf der Ebene »Actions« in Bild 10 aus, und weisen Sie dem Schlüsselbild zunächst folgen-den Code zu:

1: // Init

2: var xFighterHealth:Number=1;

3: var gunPower:Number=1;

4: var punkte:uint=0;

Zu Beginn werden einige Spielvariablen initialisiert:EE xFighterHealth: Die Lebenspunkte des Raumschiffs; der

Wert 1 entspricht vollen Lebenspunkten, bei 0 wird das Spiel beendet.

SoundkomprimierungDie Soundkomprimierung des Flash-Films wurde in den Veröf-fentlichungseinstellungen des Flash-Films auf MP3, 80 kbit/s (Mono) eingestellt.

Mauszeiger ausblenden

Alternativ können Sie an dieser Stelle den Mauszeiger auch aus-blenden. Ergänzen Sie den Code dafür um die Zeile:

Mouse.hide ();

Page 64: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.5 Asteroids-Spiel | 807

EE gunPower: Das Raumschiff besitzt nur eine begrenzte Menge an Energie. Energie wird benötigt, um Schüsse abzugeben (der Wert 1 ist der maximale Wert). Nach jedem Schuss verringert sich der Wert. Er wird später automatisch nach einiger Zeit wieder aufgeladen.

EE punkte: die aktuelle Punktzahl der Spielsession

20.5.4  RaumschiffsteuerungAuf der Ebene »xFighter« in Bild 10 befindet sich ein Movie Clip mit einem gleichnamigen Instanznamen. Dieser wird über die Maus gesteuert. Ergänzen Sie den Code im zehnten Schlüsselbild um folgende Zeilen:

1: //xFighter-Steuerung

2: xFighter.addEventListener(Event.ENTER_FRAME,

posFighter);

3: function posFighter(e:Event):void {

4: var dx:Number=stage.mouseX-e.currentTarget.x;

5: var dy:Number=stage.mouseY-e.currentTarget.y;

6: var easeFaktor:Number=8;

7: e.currentTarget.x+=dx/easeFaktor;

8: e.currentTarget.y+=dy/easeFaktor;

9: if (stage.mouseY<e.currentTarget.y) {

10: e.currentTarget.fireBack.gotoAndStop(2);

11: } else {

12: e.currentTarget.fireBack.gotoAndStop(1);

13: }

14: }

Über das Ereignis Event.ENTER_FRAME wird das Raumschiff anhand der Mausposition mehrmals pro Sekunde in Abhängigkeit von der Bildrate bewegt. Es wird mit einer leichten Verzögerung immer in Richtung der aktuellen Mausposition verschoben (Zeile 4 bis 8).

Innerhalb des MovieClips »xFighter« befindet sich ein Movie-Clip mit dem Instanznamen »fireBack«, der den Antrieb des Raumschiffs darstellt. Wenn sich der Mauszeiger oberhalb des Raumschiffs befindet (Zeile 9), sich das Raumschiff also nach oben bewegt, wird der hintere Antrieb des Raumschiffs gezün-det. Dazu springt der Lesekopf der Zeitleiste des MovieClips »fireBack« dann auf Bild 2 (Zeile 10). Befindet sich der Maus-zeiger hingegen unterhalb des Raumschiffs (Zeile 11), wird der Antrieb deaktiviert. Dazu springt der Lesekopf dann wieder auf Bild 1 zurück (Zeile 12).

TastatursteuerungEs ist nicht besonders aufwendig, das Raumschiff auch über die Tas-tatur steuern zu können. Nach-dem Sie das Spiel fertiggestellt haben, probieren Sie den Code selbstständig zu ergänzen.

Verzögerung einstellenSie können den easeFaktor in Zeile 6 ändern, um die Verzöge-rung der Bewegung zu ändern. Je höher Sie den Wert stellen, desto größer wird die Verzögerung.

Steuerung des AntriebsDie Steuerung des Antriebs dient ausschließlich zur Visualisierung.

Alternativer Antrieb

Der Antrieb ist sehr einfach gestaltet. Sie können auch eine Animationssequenz verwenden, um das Beispiel visuell etwas aufzuwerten.

Page 65: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

808  | 20 Spieleprogrammierung

GE Abbildung 20.14Die Zustände des Raum schiff antriebs

20.5.5  Feuer freiIn der Bibliothek des Flash-Films befi ndet sich ein MovieClip, der mit der Klasse GunFire verknüpft ist. Der MovieClip stellt den Laserschuss des xFighters dar. Klickt der Benutzer auf die Maus-taste, soll das Raumschiff einen Schuss abgeben. Ergänzen Sie den Code in Schlüsselbild 10 dazu um folgende Zeilen:

1: // Gun

2: var fireArray:Array = new Array();

3: stage.addEventListener(MouseEvent.MOUSE_DOWN,

fireGun);

4: function fireGun(e:MouseEvent):void {

5: if (gunPower-0.2>=0) {

6: var fire:GunFire = new GunFire();

7: fire.x=xFighter.x;

8: fire.y=xFighter.y-16;

9: fire.myIndex=fireArray.length;

10: addChild(fire);

11: fireArray.push(fire);

12: fire.addEventListener(Event.ENTER_FRAME,

fireMove);

13: gunPower-=0.2;

14: gunPowerDisplay.bar.scaleX=gunPower;

15: var mySoundChannel:SoundChannel=

myGunSound.

play(0,1);

16: var mySoundTransform:SoundTransform=new

SoundTransform(0.3);

17: mySoundChannel.soundTransform=

mySoundTrans form;

18: }

19: }

20: function fireMove(e:Event):void {

21: e.currentTarget.y-=10;

GE Abbildung 20.15Der MovieClip »GunFire« ist mit der Klasse GunFire verknüpft.

Page 66: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.5 Asteroids-Spiel | 809

22: if (fireArray.length>20) {

23: fireArray.splice(0,5);

24: }

25: if (e.currentTarget.y<0) {

26: e.currentTarget.removeEventListener(Event.

ENTER_FRAME,fireMove);

27: removeChild(DisplayObject(e.currentTarget));

28: fireArray.splice(e.currentTarget.myIndex,1);

29: }

30: }

Zunächst wird in Zeile 2 ein Array initialisiert, dem später Instan-zen der Klasse GunFire zugewiesen werden. Führt der Benutzer einen Mausklick aus (Zeile 3), wird die Funktion fireGun aufge-rufen.

Die Funktion überprüft zunächst, ob das Raumschiff noch genügend Energie besitzt, um einen weiteren Schuss abzugeben (Zeile 5). Ist das der Fall, wird ein Objekt der Klasse GunFire ini-tialisiert (Zeile 6), und das Objekt wird positioniert (Zeile 7 und 8). Um den Feldindex des Objekts im Array fireArray und damit das Objekt selbst später eindeutig ermitteln zu können, wird der (dynamischen) Eigenschaft myIndex des MovieClips die aktuelle Länge des Arrays fireArray zugewiesen (Zeile 9). So entspricht der Wert der Eigenschaft myIndex dem Index des Feldes, über das das aktuelle GunFire-Objekt referenziert werden kann.

Das Objekt wird zum Array fireArray hinzugefügt (Zeile 11). Am Objekt wird ein Ereignis-Listener für das Ereignis Event.ENTER_FRAME registriert, der die Funktion fireMove mehrmals pro Sekunde aufruft (Zeile 12). Der Wert der Variablen gunPower wird um 0,2 reduziert (Zeile 13), und der MovieClip gunPower-Display.bar wird entsprechend skaliert (Zeile 14).

Die Zeilen 15 bis 17 führen dazu, dass der Sound myGunSound mit einer Lautstärke von 0,3 abgespielt wird. Die Funktion fireMove sorgt dafür, dass sich das jeweilige Projektil nach oben bewegt

MovieClip: Dynamische Klasse Die MovieClip-Klasse ist eine dynamische Klasse. Objekten der Klasse können zur Laufzeit Eigen-schaften zugewiesen werden. Von diesem Merkmal wird hier ge-braucht gemacht, indem der Klasse GunFire die dynamische Eigenschaft myIndex zur Laufzeit zugewiesen wird.

FE Abbildung 20.16Der MovieClip »bar«, der inner-halb des MovieClips »gunPower-Display« liegt.

Page 67: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

810  | 20 Spieleprogrammierung

(Zeile 21). Sobald mehr als 20 Objekte der Klasse GunFire exis-tieren (Zeile 22), werden die ersten fünf aus dem Array fireAr-ray (Zeile 23) entfernt. Dadurch verhindern Sie, dass die Anzahl der Elemente des Arrays immer größer wird und der Speicher vollläuft.

Sobald ein Objekt der Klasse GunFire außerhalb der Bühne ist (Zeile 25), wird der Ereignis-Listener unregistriert (Zeile 26) und das Objekt wird aus der Anzeigeliste entfernt (Zeile 27). Anschlie-ßend wird die Referenz auf das Objekt aus dem Array fireArray entfernt (Zeile 28).

20.5.6  Asteroiden erzeugen In der Bibliothek fi nden Sie einen MovieClip »Asteroid«, der mit der Klasse Asteroid verknüpft wurde. Im ersten Bild des Movie-Clips befi ndet sich die ursprüngliche Form des Asteroiden. Kol-lidiert der Asteroid mit dem Raumschiff oder einem Schuss des Raumschiffs, explodiert er. Eine entsprechende Animationsse-quenz fi nden Sie ab Bild 2 innerhalb des MovieClips. Ergänzen Sie den Code im zehnten Schlüsselbild um folgende Zeilen:

1: // Asteroid

2: var asteroidTimer:Timer=new Timer(700,int.

MAX_VALUE);

3: asteroidTimer.addEventListener(TimerEvent.TIMER,

createAsteroid);

4: asteroidTimer.start();

5: var asteroidArray:Array = new Array();

6: function createAsteroid(e:TimerEvent):void {

7: var newAsteroid:Asteroid = new Asteroid();

8: newAsteroid.x=randomExt(0,stage.

stageWidth-newAsteroid.width);

9: newAsteroid.y=0-newAsteroid.height;

10: newAsteroid.name="nohit";

11: newAsteroid.speed=randomExt(5,10);

12: addChild(newAsteroid);

13: asteroidArray.push(newAsteroid);

14: newAsteroid.addEventListener(Event.ENTER_FRAME,

moveAsteroid);

15: // Remove Asteroids

16: if (asteroidArray.length>120) {

17: for (var i:uint = 0; i<10; i++) {

18: asteroidArray[i].removeEventListener

(Event.ENTER_FRAME,moveAsteroid);

19: removeChild(asteroidArray[i]);

Anzahl der Objekte überprüfenWenn Sie mehrere Instanzen einer Klasse z. B. über eine for-Schleife mehrmals initialisieren, sollten Sie grundsätzlich zur Laufzeit über-prüfen, ob der Speicherbedarf des Flash-Films endlos zunimmt.Denken Sie daran, Objekte, die nicht mehr benötigt werden, für das Löschen aus dem Speicher freizugeben, und prüfen Sie den Speicherverbrauch, bevor Sie ei-nen Flash-Film bereitstellen.

GE Abbildung 20.17Die Zeitleiste des MovieClips »Asteroid«

GE Abbildung 20.18Explosionssequenz des Asteroiden

Page 68: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.5 Asteroids-Spiel | 811

20: }

21: asteroidArray.splice(0,10);

22: }

23: }

Zu Beginn wird die Funktion createAsteroid im Abstand von 0,7 Sekunden aufgerufen (Zeile 2 bis 4). Wie Sie später sehen, wird die Zeit nach und nach verringert. In Zeile 5 wird ein Array initialisiert, dem später Objekte der Klasse Asteroid zugewie-sen werden. Die Funktion createAsteroid erzeugt Objekte der Klasse Asteroid. Dazu wird in Zeile 7 ein Objekt der Klasse ini-tialisiert. In Zeile 8 und 9 wird das jeweilige Objekt platziert. Auf der x-Achse wird es zufällig, auf der y-Achse wird es oben außer-halb der Bühne positioniert. In Zeile 10 wird dem Objekt der Ins-tanzname nohit zugewiesen. Der Instanzname wird später dazu verwendet, um festzustellen, ob der Asteroid bereits mit einem anderen Objekt kollidiert ist.

In Zeile 11 wird der dynamischen Eigenschaft speed ein zufäl-liger Wert zwischen 5 und 10 zugewiesen. Das Objekt wird zur Anzeigeliste hinzugefügt (Zeile 12), und eine Referenz auf das Objekt wird zum Array asteroidArray hinzugefügt (Zeile 13).

In Zeile 14 wird ein Ereignis-Listener an dem Objekt regist-riert, der dafür sorgt, dass die Funktion moveAsteroid mehrmals pro Sekunde aufgerufen wird.

20.5.7  Bewegung und Kollisionserkennung der AsteroidenDie Formen der Objekte, für die eine Kollisionserkennung durch-geführt wird, wurden so gewählt, dass die Kollisionserkennung über die Methode hitTestObject durchgeführt werden kann, und das obwohl es sich dabei nicht nur um rechteckige Formen handelt. Die Kollisionserkennung über die Methode hitTestOb-ject ist für dieses Beispiel jedoch ausreichend präzise. Ergänzen Sie den Code im zehnten Schlüsselbild um folgende Zeilen:

1: function moveAsteroid(e:Event):void {

2: e.currentTarget.y+=e.currentTarget.speed;

3: // Kollisionserkennung mit xFighter

4: if (e.currentTarget.hitTestObject(xFighter)&&

e.currentTarget.name=="nohit") {

5: setHealth(xFighterHealth-0.3);

6: if (xFighterHealth<=0) {

7: endGame();

8: }

9: e.currentTarget.gotoAndPlay(2);

Alternative: Levels

Es gibt in diesem Spiel keine Le-vels. Diese könnten jedoch ein-fach eingerichtet werden. Zum Beispiel könnte je Level die Zeit, nach der ein Asteroid erzeugt wird, reduziert werden.

Objekte entfernenSollte die Anzahl der Elemente des Arrays asteroidArray größer als 120 sein (Zeile 16), werden die ersten zehn Elemente (Zeile 18 und 19), d. h. die ersten zehn zuvor erzeugten Asteroiden, ent-fernt. Dadurch wird verhindert, dass der Speicher vollläuft. Beach-ten Sie, dass die Asteroiden sonst weiterhin existent wären, auch wenn Sie die Bühne bereits ver-lassen haben.

Page 69: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

812  | 20 Spieleprogrammierung

10: e.currentTarget.name="hit";

11: myExplosion.play(0,1);

12: }

13: // Kollisionserkennung mit GunFire

14: for (var i:uint = 0; i<fireArray.length; i++) {

15: if (e.currentTarget.hitTestObject

(fireArray[i])&&e.currentTarget.

name=="nohit") {

16: e.currentTarget.gotoAndPlay(2);

17: e.currentTarget.name="hit";

18: fireArray[i].removeEventListener(Event.

ENTER_FRAME,fireMove);

19: try {

20: removeChild(fireArray[i]);

21: } catch (e:Error) {

22: // Display-Object existiert nicht

mehr.

23: }

24: fireArray.splice(i,1);

25: punkte+=40;

26: punkte_txt.text=String(punkte);

27: var mySoundChannel:SoundChannel=

myExplosion.play(0,1);

28: var mySoundTransform:SoundTransform=

new SoundTransform(0.3);

29: mySoundChannel.soundTransform=

mySoundTransform;

30: }

31: }

32: }

In Zeile 2 wird der jeweilige Asteroid um den Wert der Eigen-schaft speed nach unten verschoben. Ab Zeile 3 folgt die Kolli-sionserkennung zwischen dem jeweiligen Asteroiden und dem Raumschiff. In Zeile 4 wird über die Methode hitTestObject geprüft, ob das Raumschiff mit dem Asteroiden kollidiert. Zusätz-lich wird überprüft, ob der Instanzname des MovieClips gleich nohit ist. Dies ist notwendig, da die Kollisionserkennung auch kurz nach einer Kollision noch true ergeben würde.

Nur wenn beide Bedingungen erfüllt sind, wird der Code ab Zeile 5 ausgeführt. In Zeile 5 werden die Lebenspunkte des xFigh-ters um 0,3 reduziert. Dazu wird die Funktion setHealth aufge-rufen, die später noch definiert wird. Sollten die Lebenspunkte kleiner oder gleich 0 sein (Zeile 6), wird das Spiel durch den Auf-

Alternativer Schwierigkeitsgrad

Den Wert 0,3 können Sie na-türlich auch ändern, um die Schwierigkeit des Spiels zu be-einflussen.

Page 70: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.5 Asteroids-Spiel | 813

ruf der Methode endGame beendet (Zeile 7). Auch diese Funktion wird später noch definiert. Um die Kollision zu visualisieren, springt der Lesekopf des Asteroiden-MovieClips auf Bild 2 (Zeile 9). Hier wird dann die Explosionsanimation des Asteroiden abgespielt. Der Instanzname des Asteroiden wird auf »hit« gesetzt (Zeile 10), um zu vermeiden, dass die vorausgehende Fallentscheidung beim nächsten Durchlauf erneut zum Erfolg führt. Anschließend wird der Sound myExplosion in Zeile 11 abgespielt.

Ab Zeile 13 wird eine Kollisionserkennung mit den jeweiligen Laserschüssen des Raumschiffs durchgeführt. Mithilfe einer for-Schleife (Zeile 14) werden die Elemente des Arrays fireArray durchlaufen. In Zeile 15 wird dann geprüft, ob ein Schuss mit einem Asteroiden kollidiert. In diesem Fall springt der Lesekopf des jeweiligen Asteroiden-MovieClips auf Bild 2 (Zeile 16), der Instanzname des MovieClips wird auf hit gesetzt, und der Schuss wird sowohl aus dem Array als auch von der Anzeigeliste entfernt (Zeile 18 bis 24).

Die Punktzahl wird um 40 erhöht (Zeile 25), und die neue Punktzahl wird im Textfeld »punkte_txt« ausgegeben. In Zeile 27 bis 29 wird der Sound myExplosionFire mit einer Lautstärke von 0,3 abgespielt.

Ergänzen Sie den Code nun um folgende Zeilen:

function setHealth(value:Number):void {

xFighterHealth=value;

healthBar.bar.scaleX=xFighterHealth;

}

Über die Methode setHealth werden die Lebenspunkte des Raumschiffs neu gesetzt. Dazu wird der Variablen xFighter-Health der Wert des Arguments value zugewiesen. Anschlie-ßend wird der MovieClip healthBar.bar entsprechend skaliert.

20.5.8  Schwierigkeitsgrad erhöhenDer Schwierigkeitsgrad soll mit zunehmender Spielzeit erhöht wer-den. Dafür wird die Zeit, nach der die Funktion createAsteroid aufgerufen wird, jeweils um 50 Millisekunden reduziert. Das führt dazu, dass mehr Asteroiden im gleichen Zeitraum erzeugt werden. Ergänzen Sie den Code im zehnten Schlüsselbild dazu wie folgt:

1: // Schwierigkeitsgrad

2: var levelTimer:Timer=new Timer(10000,7);

3: levelTimer.addEventListener(TimerEvent.TIMER,

setLevelUp);

try/catch-AnweisungEs kann vorkommen, dass das fire-Objekt zu diesem Zeitpunkt bereits von der Bühne entfernt wurde. Aus diesem Grund wird das Entfernen des Objekts in eine try/catch-Anweisung eingeschlos-sen. Das dient zur Verhinderung von Compiler-Laufzeitfehlern.

Alternative: Dynamische Punkt-zahl

Sie können das Spiel auch so än-dern, dass sich die Punktzahl mit zunehmender Spieldauer erhöht, und/oder Sie erstellen noch weitere Objekte (Alternativen zu Asteroiden), die eine höhere Punktzahl ergeben.

Page 71: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

814  | 20 Spieleprogrammierung

4: levelTimer.start();

5: function setLevelUp(e:TimerEvent):void {

6: asteroidTimer.delay-=50;

7: }

Zunächst wird ein neues Timer-Objekt initialisiert (Zeile 2). Das Timer-Objekt sorgt dafür, dass siebenmal im Abstand von zehn Sekunden (10.000 Millisekunden) die Funktion setLevelUp auf-gerufen wird. Die Funktion setLevelUp reduziert den Wert der Eigenschaft delay des asteroidTimer-Objekts um 50.

20.5.9  Schussenergie aufladenImmer dann, wenn der Spieler die Maustaste drückt, wird ein Laserschuss abgegeben, soweit das Raumschiff über ausreichend Energie verfügt. Nach jedem abgegebenen Schuss soll die Energie reduziert werden, sodass der Spieler nicht permanent Schüsse abgeben kann. Diese Energie muss nach einiger Zeit wieder auf-geladen werden, damit das Raumschiff wieder schießen kann. Ergänzen Sie den Code dazu um folgende Zeilen:

1: // GunPower

2: var gunTimer:Timer=new Timer(500,int.MAX_VALUE);

3: gunTimer.addEventListener(TimerEvent.TIMER,

setPowerUp);

4: gunTimer.start();

5: function setPowerUp(e:TimerEvent):void {

6: if (gunPower+0.1<=1) {

7: gunPower+=0.1;

8: }

9: gunPowerDisplay.bar.scaleX=gunPower;

10: }

Die Energie soll alle 0,5 Sekunden automatisch aufgeladen wer-den. Dazu wird ein Timer-Objekt initialisiert (Zeile 2), das dafür sorgt, dass die Funktion setPowerUp aufgerufen wird. Die Funk-tion setPowerUp prüft zunächst, ob der Wert der Variablen plus 0,1 kleiner oder gleich 1 ist. In diesem Fall wird die Energie um 0,1 erhöht. Anderenfalls wäre die Energiekapazität des Raumschiffs bereits voll aufgeladen. Anschließend wird der MovieClip gunPow-erDisplay.bar dem neuen Wert entsprechend skaliert (Zeile 9).

20.5.10  Lebenspunkte erzeugenIn der Bibliothek finden Sie einen MovieClip »Energy«, der mit einer gleichnamigen Klasse verknüpft wurde.

Alternative: Schwierigkeitsgrad

Sie können sowohl die Zeitan-gaben als auch die Wiederho-lungen der Erhöhung des Levels anpassen, um die Schwierigkeit des Spiels zu erhöhen oder zu reduzieren. Beachten Sie dabei jedoch, dass der Wert der Eigen-schaft delay des asteroidTimer-Objekts nicht gleich oder kleiner als 0 werden darf.

Page 72: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.5 Asteroids-Spiel | 815

Alle zehn Sekunden soll ein Spielelement (Energiepunkt) erschei-nen, über das der Spieler sowohl die Lebenspunkte des Raum-schiffs als auch die Schussenergie aufl aden kann, wenn er das Spielelement mit dem Raumschiff aufnimmt. Ergänzen Sie den Code dazu um folgende Zeilen:

1: // Energy

2: var energyTimer:Timer=new Timer(10000,int.

MAX_VALUE);

3: energyTimer.addEventListener(TimerEvent.TIMER,

createEnergy);

4: energyTimer.start();

5: function createEnergy(e:TimerEvent):void {

6: var myEnergy:Energy = new Energy();

7: myEnergy.x=randomExt(0+myEnergy.width,stage.

stageWidth-myEnergy.width);

8: myEnergy.y=0-myEnergy.height;

9: addChild(myEnergy);

10: myEnergy.addEventListener(Event.ENTER_FRAME,

moveEnergy);

11: }

12: function moveEnergy(e:Event):void {

13: if (e.currentTarget.y<stage.stageHeight) {

14: e.currentTarget.y+=10;

15: } else {

16: e.currentTarget.removeEventListener(Event.

ENTER_FRAME,moveEnergy);

17: removeChild(DisplayObject(e.currentTarget));

18: }

19: // Kollisionserkennung mit xFighter

20: try {

21: if (e.currentTarget.hitTestObject

(xFighter)) {

22: e.currentTarget.

removeEventListener(Event.ENTER_FRAME,

moveEnergy);

23: removeChild(DisplayObject

(e.currentTarget));

24: myEnergySound.play(0,1);

25: if (xFighterHealth+0.3<=1) {

26: setHealth(xFighterHealth+0.3);

27: }

28: gunPower=1;

29: }

Alternative: Schwierigkeitsgrad

Sie können den Schwierigkeits-grad beeinfl ussen, indem Sie die Stärke der Aufl adung ändern. Sie können auch festlegen, dass nur die Lebenspunkte wiederherge-stellt werden und nicht zusätz-lich die Energie des Raumschiffs.

GE Abbildung 20.19Der MovieClip »Energy«, der mit der Klasse Energy verknüpft wurde.

Page 73: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

816  | 20 Spieleprogrammierung

30: } catch (e:Error) {

31: // Energy existiert nicht mehr.

32: }

33: }

In Zeile 2 bis 4 wird zunächst ein Timer-Objekt initialisiert und gestartet, das dafür sorgt, dass die Funktion createEnergy jeweils nach zehn Sekunden aufgerufen wird. Analog zur Erstel-lung eines Asteroiden wird ein Objekt der Klasse Energy erzeugt, positioniert und zur Anzeigeliste hinzugefügt (Zeile 6 bis 9). An dem Objekt wird ein Ereignis-Listener registriert (Zeile 10), der über das Ereignis Event.ENTER_FRAME mehrmals pro Sekunde die Funktion moveEnergy aufruft.

Innerhalb der Funktion moveEnergy wird zunächst geprüft, ob die Position auf der y-Achse des Energiepunkts kleiner als die Höhe der Bühne ist (Zeile 13). Ist das der Fall, wird der Ener-giepunkt um 10 Pixel nach unten verschoben (Zeile 14). Ande-renfalls befindet er sich unterhalb der Bühne und kann entfernt werden (Zeile 16 und 17).

Ab Zeile 19 wird geprüft, ob der Energiepunkt mit dem Raum-schiff kollidiert. Findet eine Kollision statt, wird der Energiepunkt entfernt (Zeile 22 und 23), und der Sound myEnergySound wird abgespielt (Zeile 24).

Sollen die aktuellen Lebenspunkte des Raumschiffs plus 0,3 kleiner oder gleich 1 sein (Zeile 25), wird der entsprechende Wert um 0,3 erhöht (Zeile 26). Der Wert für die Schussenergie wird in Zeile 28 zurück auf 1 gesetzt. Um den Schwierigkeitsgrad zu erhöhen, können Sie den Wert z. B. auch nur um 0,1 oder 0,2 erhöhen.

20.5.11  SlowMotion-Punkte erzeugenNeben den Lebenspunkten gibt es in der Bibliothek einen Movie-Clip »SlowMotion«, der mit der Klasse SlowMotion verknüpft ist. Alle zwölf Sekunden wird ein solcher Punkt erzeugt. Nimmt der Spieler den Punkt auf, wird die Bewegung von Asteroiden, die sich zu diesem Zeitpunkt auf der Bühne befinden, verlangsamt. Für die Logik des SlowMotion-Punkts ergänzen Sie den Code um folgende Zeilen:

1: // Slow Motion

2: var slowTimer:Timer=new Timer(12000,int.MAX_VALUE);

3: slowTimer.addEventListener(TimerEvent.TIMER,

createSlowMotion);

4: slowTimer.start();

Vermeidung von Compiler- Fehlern zur LaufzeitEs kann vorkommen, dass der Energiepunkt zu diesem Zeitpunkt nicht mehr existiert. Um Compi-ler-Fehler zur Laufzeit zu vermei-den, wurde der Teil in einen try/catch-Block eingebunden.

Page 74: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.5 Asteroids-Spiel | 817

5: function createSlowMotion(e:TimerEvent):void {

6: var myMotion:SlowMotion = new SlowMotion();

7: myMotion.x=randomExt(0+myMotion.width,stage.

stageWidth-myMotion.width);

8: myMotion.y=0-myMotion.height;

9: addChild(myMotion);

10: myMotion.addEventListener(Event.ENTER_FRAME,

moveMotion);

11: }

12: function moveMotion(e:Event):void {

13: if (e.currentTarget.y<stage.stageHeight) {

14: e.currentTarget.y+=10;

15: } else {

16: e.currentTarget.removeEventListener(Event.

ENTER_FRAME,moveMotion);

17: removeChild(DisplayObject(e.currentTarget));

18: }

19: // Kollisionserkennung mit xFighter

20: try {

21: if (e.currentTarget.hitTestObject

(xFighter)) {

22: e.currentTarget.removeEventListener

(Event.ENTER_FRAME,moveMotion);

23: removeChild(DisplayObject

(e.currentTarget));

24: myEnergySound.play(0,1);

25: for (var i:uint = 0; i<asteroidArray.

length; i++) {

26: asteroidArray[i].speed=2;

27: }

28: }

29: } catch (e:Error) {

30: // Energy existiert nicht mehr.

31: }

32: }

Der Code ist nahezu identisch mit dem Code, der dafür sorgt, Lebenspunkte zu erzeugen.

20.5.12  Spiel beendenWenn die Lebenspunktzahl des Raumschiffs den Wert 0 unter-schreitet, soll das Spiel beendet werden. In diesem Fall wird die Funktion endGame aufgerufen. Ergänzen Sie den Code im zehnten Schlüsselbild abschließend um folgende Zeilen:

Alternative: Weitere Bonus-punkte einfügen

Auf dieselbe Art und Weise kön-nen Sie weitere Bonuspunkte einfügen, die verschiedene Ak-tionen ausführen. Zum Beispiel können Sie einen Punkt Blast erzeugen, der alle Asteroiden, die sich auf der Bühne befinden, zerstört. Oder Sie erzeugen Mi-nen, die über einen gewissen Zeitraum in einem bestimmten Bereich alle Asteroiden zerstö-ren. Weitere Bonuspunkte über-lassen wir Ihrer Fantasie.

Page 75: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

818  | 20 Spieleprogrammierung

1: function randomExt(minVal:Number,maxVal:Number):

Number {

2: return Math.floor(Math.random() *

(1+maxVal-minVal)) + minVal;

3: }

4: function endGame():void {

5: xFighter.removeEventListener(Event.

ENTER_FRAME,posFighter);

6: stage.removeEventListener(MouseEvent.MOUSE_

DOWN,fireGun);

7: energyTimer.stop();

8: slowTimer.stop();

9: asteroidTimer.stop();

10: levelTimer.stop();

11: gunTimer.stop();

12: for (var i:uint = 0; i<asteroidArray.length;

i++) {

13: asteroidArray[i].removeEventListener(Event.

ENTER_FRAME,moveAsteroid);

14: removeChild(asteroidArray[i]);

15: }

16: gotoAndStop("Highscore");

17: }

18: stop();

In Zeile 1 bis 3 wird zunächst eine Hilfsfunktion randomExt definiert, die einen Zufallswert eines bestimmten Wertebe-reichs zurückgibt. Der Wertebereich wird durch die Argumente bestimmt. Die Funktion wurde bereits vorher mehrmals benutzt, um Objekte zufällig zu positionieren und eine zufällige Geschwin-digkeit zu definieren.

Die Funktion endGame sorgt dafür, dass alle Ereignis-Listener, die registriert wurden, entfernt (unregistriert) werden (Zeile 5 und 6). Die Timer-Objekte werden gestoppt (Zeile 7 bis 11).

Mithilfe einer for-Schleife werden die Elemente des Arrays asteroidArray durchlaufen und von der Anzeigeliste entfernt (Zeile 12 bis 15). Zum Schluss springt der Lesekopf der Haupt-zeitleiste auf das Bild mit dem Bildbezeichner Highscore (Zeile 16). Damit ist die Programmierung der Logik des Spiels abge-schlossen.

Hinweis: myEnergy- und  myMotion-ObjekteDie Objekte myEnergy und myMotion müssen nicht unbedingt entfernt werden. Sie bewegen sich autonom nach unten bis au-ßerhalb der Bühne und werden dann entfernt.

Alternative: Mauszeiger einblenden

Wenn Sie den Mauszeiger zu Be-ginn ausgeblendet haben, sollten Sie ihn jetzt wieder einblenden. Ergänzen Sie den Code innerhalb der Funktion endGame dazu um folgende Zeile:

Mouse.show();

Page 76: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

20.7 Highscore | 819

20.6  Verbesserungen

Das Spiel ist so, wie es ist, noch ziemlich simpel und bietet auf Dauer keine tatsächliche Herausforderung. Es lässt sich jedoch relativ einfach erweitern und dadurch deutlich interessanter gestalten. Einige Möglichkeiten dafür haben wir in der Margina-lie bereits genannt.

Professionelle Entwicklungsteams von Browserspielen besitzen meist jahrelange Erfahrung und arbeiten in Teams an einem Spiel mehrere Wochen, Monate oder sogar Jahre. Natürlich hatten wir einen solchen Zeitraum nicht zur Verfügung, deshalb sollten Sie das Spiel nicht mit einem professionellen Spiel vergleichen.

Wenn Sie sich weiter mit diesem interessanten Themenbereich beschäftigten möchten, empfehlen wir Ihnen zur Inspiration die Webseite http://www.fl­ashgames.de­­, auf der Sie sehr viele Browserspiele auf Flash-Basis von professionellen Spieleentwick-lungsteams fi nden.

20.7  Highscore

Sie haben jetzt gelernt, wie Sie ein Spiel mit Flash strukturieren und entwickeln können. Ein besonderer Anreiz für viele Spieler ist es, sich mit anderen zu messen.

FE Abbildung 20.20Das fertiggestellte Spiel im Flash Player

Vielfältige AufgabenSpieleentwicklung ist grundsätz-lich eine herausfordernde Auf-gabe, da man sich sowohl mit Grafi k, Sound als auch mit der technischen Umsetzung bzw. Pro-grammierung beschäftigen muss.

Page 77: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Index | 877

IND

EX

Index

^ 354- 348-- 349! 353!= 350!== 350.. 729@ 728* 348, 645*= 349/ 348, 661/= 349& 353, 634, 869&& 353% 348+ 348++ 349< 350<< 354<= 350== 350=== 350> 350>= 350>> 354| 354|| 353~ 354$_FILES 767$_POST 8303D-Animationen 8493D-Bewegung 4183D-Drehungswerkzeug 109

Fluchtpunkt und Perspektive 111, 112

3D-Engines 8493D-Flip 4353D-Pinsel 83, 873DS Max 8503D-Versetzungswerkzeug 1109-teiliges Segmentraster 118, 513,

514.asf 583.avc 583.avi 583.dv 583.dvi 583.flv 583

.m1v 583

.m2p 583

.m2t 583

.m2ts 583

.m4v 583

.mov 583

.mp4 583

.mpg 583\n 625.php 668.php4 668.qt 583.savers 847.scr 847.sol 802.wmv 583

Aa 624, 651Abbremseffekt 239Abdunkeln 530Abmessung des Weichzeichners

590Abprallen 798abs 427Abschluss 77Abschrägen 531Abspielgeschwindigkeit 161Abspielrichtung 150Abspielzeit 604Abstandsberechnung 414Abwärtskompatibilität 286acos 427ActionScript

Datentypen 338Editoren 448Ereignis-Listener 376Ereignisprozeduren 376Ereignisse 376Format 333, 334Funktionen 360Loader 382Modulo 348Operatoren 348Schleifen 356Typisierung 339Variablen 336Zeitleistensteuerung 364

ActionScript 1 328ActionScript 2 328ActionScript 3 329, 837ActionScript 3.0-Klasse 447ActionScript-Editor 329ActionScript-Entwicklungsum-

gebungen 842ActionScript Viewer 855Activeden 498addChild 371addChildAt 371addController 657ADDED_TO_STAGE 381addEventListener 365, 376, 399,

501Addieren 531Addition 348Admin 671Adobe AIR 833Adobe Audition 550Adobe Device Central CS5 841Adobe Exchange 50Adobe Flash Catalyst 837Adobe Flash Lite 840Adobe Flex 835Adobe LiveCycle Data Services

836Adobe Media Encoder 583Adobe Media Player 585Adobe Soundbooth 550Adobe Sound Document 547ADPCM 548Aktualisieren 549Aktualisierungen 51album 560align 642Alle einblenden 333allowFullScreen 601alpha 367, 397Alpha 71, 531Als Video für Mobilgeräte in SWF

zusammengefasst importieren 593

Amayeta SWF Encrypt 5.0 856Amplitude 546Analoge Uhr 468anchorX 486anchorY 486

Page 78: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

878  | Index

Ändern der Videogröße 586Android 840An Hilfslinie ausrichten 124Animation 149

3D-Bewegung 209Abspielrichtung 150Animation anlegen 162beenden 409Beschleunigung 239Bildbezeichner 159Bild-für-Bild 160Geschwindigkeit ändern 168Inverse Kinematik 230Klassische Tweens 197kopieren 196loopen 409Posenanimation 240Sequenzen 432Skalierung 209Steuerungspunkt 240Szenen 158Timing 202umkehren 432Zeitleiste 149Zwiebelschaleneffekt 170

Ankathete 415Ankerpunkt

entfernen 104umwandeln 101

AnsichtAn Fenster anpassen 56Vergrößerung 56zentrieren 56

Anti-Aliasing 257antiAliasType 638AntiAliasType.ADVANCED 638AntiAliasType.NORMAL 638Anwendungsbereiche 32

aktuelle Meldungen 33Animationen 33Benutzeroberflächen 33E-Learning 36Flash gegen HTML 5 35Präsentationen 34Spiele 34, 35Video-Anwendungen 35

Anzeigeklassen 366Anzeigeliste 365

Reihenfolge 371Reihenfolge ändern 373

Anzeigeobjektcontainer 365Anzeigeobjekte 365, 479

aus Speicher entfernen 372Eigenschaften 367, 368entfernen 370Ereignisse 380graphics 479hinzufügen 370Sichtbarkeit 373

Apache 668API 328appendChild 741appendText 645Apple iOS 840Arbeitsbereiche

auf einen anderen Computer übertragen 62

auswählen 62löschen 62

Arbeitsfläche 55Arbeitsumgebung 45

laden 62speichern 62

ARGB 537Argumente 361Arkuskosinus 427Arkussinus 427Arkustangens 427Array 338, 343

assoziativ 344Feldwerte 343indiziert 343Länge 345mehrdimensional 345Methoden 343, 344sortieren 345sortieren (mehrdimensional,

assoziativ) 346typisiert 347Verkettung 343

Array.CASEINSENSITIVE 346Array.DESCENDING 345, 346Array.DESCENDING. 746Array.NUMERIC 345, 346, 746Array.RETURNINDEXEDARRAY

346artist 560AS3CoreLib 827ASC 712asin 427ASP 667Assets 513Assoziative Arrays 344Asteroids 804

atan 427atan2 424, 427ATOM 733Attribute 705AU 547Audacity 550Audio-CD 545Audio-Editor 550Audio einschließen 595Audio-Ereignis 547Audio-Player 573Audio-Spur 592, 602Audio-Stream 547Audio Video Interleaved 583Auf (Zustand) 552Auf Ebenen verteilen 264Aufhellen 530Aufzählungszeichen 624Ausblenden 554Ausdrücke (regulär) 661Ausführungszeit 778Ausgabe-Fenster 335Ausgabeformat 585Ausgabegröße ändern 588Ausrichten

an Pixeln 78TLF-Text 279von Text 251

Auswahlbereich ausblenden 333Auswahl-Werkzeug 102Auswählbar 617Auswählen, ähnliche Farben 105Auszeichnungen 249

Fettdruck 250Kapitälchen 250Kursiv 250

autoAlpha 438, 439Auto-Format 333, 334AUTO_INCREMENT 705Automatischer Import 455Automatischer Klassen-Import

844Automatischer Paket-Import 844Automatisch unterschneiden 253autoSize 638AVE Imperator 855AVM 329AVM1Movie 369Away 3D 849Axialis Professional Screensaver

Producer 847

Page 79: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Index | 879

Bb 624Back 434background 638backgroundAlpha 652backgroundColor 638, 652Backslashes 723

entfernen 723Bandbreiten-Profiler 314

Bild-für-Bild 315Download-Einstellungen 315Optimierung des Ladeverhaltens

315Streaming-Grafik 314

Barrierefreiheit 321, 835Base64Encoder 827Basisklasse 369, 375, 467, 475Batch-Verfahren 585Baumpinsel 84, 93BCC 698Bearbeitbar 617Bearbeitbarer Text 524beginFill 487beginGradientFill 495Begrenzungsrahmen 134, 790Begrüßungsbildschirm 45Benutzerdefiniert 521, 554Benutzerdefinierte Preloader-

Schleife 616Benutzerdefiniertes Anti-Aliasing

264Beschleunigung 178, 204, 239, 404

Abbremseffekt 239abbremsen 204Beispiel 206Beschleunigungstypen 239Bewegungs-Editor 191Stärke 239verwenden 192

BEVEL 482bevelFilter 439BevelFilter 534Bewegung 209, 406

in Raum 209linear 406nicht linear 406

Bewegungs-Editor 184Anzeige steuern 184Beispiel 188Beispiel Beschleunigung 192Beschleunigung 191, 192Beschleunigungstypen 191

Eckpunkt 187Glättungspunkt 187Graphen 186Schlüsselbild hinzufügen 186verwenden 188Zeitleiste Umgang 186

Bewegungspfad 180, 201Beispiel 180drehen 180eigenen Pfad erstellen 183erstellen 180Umformen 179

Bewegungsrichtungen 405Bewegungs-Tween 172, 175

Animation an Pfad erstellen 180

Beispiel 175Beschleunigung 178Drehung 178Eigenschaften 177Eigenschaften animieren 173erstellen 172, 175Geschwindigkeit 180Instanzname 177Optionen 177, 178Pfad 178Pfad drehen 180Pfadumformung 179Tweenlänge ändern 181verlängern 176

Bewegungsvoreinstellungen 195bezier 439Bézierkurven 485bezierThrough 439Bühne 55, 365

Größe einstellen 57Bibliothek 141

bereinigen 144Elemente löschen 142externe 146gemeinsam genutzt 144Klassen-Instanzen erzeugen 374Ordner 143Ordnung und Struktur 142

BIGINT 706Bildbezeichner 158, 159

ansteuern 160Typen 159zuweisen 160

Bildebene 210, 523, 527Rotation 210

Bildebene Drehung 210

BilderAnsteuerung 160gleichzeitig bearbeiten 171kopieren 164mehrere gleichzeitig bearbeiten

171Schlüsselbilder 155

Bild-für-Bild-Animation 160Anwendungsbereiche 161Beispiel 161Bildrate 161Bildrate festlegen 161in MovieClip verschachteln 166

Bildlauf 647Bildrate 161

richtige Bildrate 161Timing 202

Bildschirmleseprogramme 321Bildschirmschoner 847BINARY 678Bindungswerkzeug 240Binär 353Binärsystem 353Bitmap 369

Dateigröße 213Eigenschaften 266in Vektor umwandeln 212Komprimierung 520mit ActionScript 536nachzeichnen 213

bitmapData 536BitmapData-Klasse 537Bitmap-Eigenschaften 520Bitmap-Filter 531, 533

animieren 532Bitmap-Füllung 116Bitmapgröße berechnen 524Bitmap in Vektoren umwandeln

105Bitmap-Klasse 536Bitmap-Linien 485Bitmap-Text 264Bitrate 549Bitshifting 354Bitverschiebung 354Bitweise 353Blaze 3D 850Bleistift 78Blender 850blendMode 533BlendMode.ADD 533BlendMode.ALPHA 533

Page 80: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

880  | Index

BlendMode.DARKEN 533BlendMode.DIFFERENCE 533BlendMode.ERASE 533BlendMode.HARDLIGHT 533BlendMode.INVERT 533BlendMode.LAYER 533BlendMode.LIGHTEN 533BlendMode.MULTIPLY 533BlendMode.NORMAL 533BlendMode.OVERLAY 533BlendMode.SCREEN 533BlendMode.SHADER 533BlendMode.SUBTRACT 533Blitzpinsel 84, 90blockindent 625blockIndent 642Blocksatz 252

TLF-Text 279Blumenpinsel 84, 90blurFilter 439BlurFilter 534BMP 519Bogenmaß 413bold 512, 642Bones

Darstellung 233Eigenschaften 232Gelenk 233Hierarchie 232Position 233Steuerungspunkt 240Verbindung entfernen 241Verbindung hinzufügen 242

Bone-Werkzeug 231Boolean 338border 638borderColor 638Bounce 434Bouncing 798, 799BoundingBox 134br 624, 651Breakpoints 390browse 757, 765, 767Browser-Caching 681

verhindern 681Browser-Cookie 801bufferLength 605bufferTime 605Button 501buttonMode 825Button-Sound 552byteArray 576

ByteArray 575, 576bytesLoaded 573, 604, 605, 764bytesTotal 573, 604, 605, 764

CCache 681Caching verhindern 729call 856Call-Stack 390cancel 762, 767CANCEL 769caps 482CapsStyle.NONE 482CapsStyle.ROUND 482CapsStyle.SQUARE 482CASEINSENSITIVE 346catch 813CC 698CDATA 739CHANGE 503CHAR 706Charakteranimation 235Checkbox 500chmod 686Cinema 4D 850Circ 434clear 481, 802CLICK 380, 788Click to Flash 328client 599, 605, 606, 610close 561, 573, 603CMS 765Code Completion 843, 846Codefragmente 331, 333Codehinweis zeigen 333Coderedundanz 475Collision Detection 789color 512, 642, 652colorMatrixFilter 439ColorMatrixFilter 534colorTransform 439columnCount 652columnGap 653columnWidth 653comment 560comments 731Compiler-Fehler 362, 389COMPLETE 383, 574, 758, 762, 769Component Assets 514computeSpectrum 575, 576concat 343connect 598, 857

ContainerController 657Container und Fluss 280, 619contains 744contentLoaderInfo 382controlX 486controlY 486ConvolutionFilter 534Cookie 801cos 427createGradientBox 495creationDate 770Cross-Domain-Policy 563, 730,

858CSS 315, 640, 652

Flash-Film mittig im Browser zentrieren 316

Positionierung 315Cubic 434Cue-Point-Name 606Cue-Points 605

Ereignis 607Navigation 610, 611

currentFPS 605currentTarget 377, 633curveTo 485CustomEase 434Custom Ease Builder 434

DDarüber (Zustand) 552data 508, 633, 677, 695, 802DataEvent.UPLOAD_COMPLETE_

DATA 770dataFormat 633, 678Data Modelling 702date 675Date 681DATE 706Dateiendungen überprüfen 771Dateigröße

analysieren 291SWF-Datei 43

Dateirechte 686, 768Datenbank erstellen 703Datenbank-Login 710Daten lokal speichern 803Datensatz 708

aktualisieren 726einfügen 707

Datentyp 336, 338, 673, 705, 741ermitteln 340Überprüfung 370, 723

Page 81: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Index | 881

Datentypkonflikt 340Datentypumwandlung 341DATETIME 706Datum 665, 675Debuggen 389Debug-Konsole 389Debug-Optionen 333DECIMAL 706Decompiler 291default 351defaultTextFormat 639, 640Dekompilieren 855Dekorpinsel 84, 88Deko-Werkzeug 83

3D-Pinsel 87Baumpinsel 93Blitzpinsel 90Blumenpinsel 90Dekorpinsel 88Feuerpinsel 89Flammenpinsel 89Gebäudepinsel 88Partikelsystem 91Rankenfüllung 84Rasterfüllung 85Rauchanimation 92Symmetriepinsel 86

delay 814delayedCall 431delete 743De MonsterDebugger 392DESC 712DESCENDING 345, 346Desktop-Anwendungen 848DF3 644DF4 644Diagramme 836die 712, 830Differenz 531Digital Video 583direction 653DisplacementMapFilter 534DisplayList 365DisplayObject 366, 369DisplayObjectContainer 366, 369dispose 541, 795DISTINCT 713div 650Division 348Dokumenteigenschaften 56Dokumentfenster

Ansicht vergrößern/verkleinern 56

Ansicht verschieben 56Dokumentklasse 464Doppelklick 380Doppelte Variablendefinition 395DOUBLE 706DOUBLE_CLICK 380, 788do-while 357download 762, 767Download 761

Einstellungen 315simulieren 315

Drag & Drop 332, 787draw 795drawCircle 494drawEllipse 494Drawing-API 479drawRect 488drawRoundRect 493drawSpectrum 579Dreamweaver 632Drehung 178Dreieck 414DRM 863dropShadowFilter 440DropShadowFilter 534Durchschussmodell 617dynamic 452Dynamische Klasse 452Dynamische Textfelder 247, 617Dynamische Variablen 339

EE 428E4X 727easeIn 434easeInOut 434easeOut 434Easing 406, 407, 433Easing Equations 433Ebene 530

Arbeiten 150bei Veröffentlichung ignorieren

154Bewegungs-Tween 173Darstellungsoptionen 157Ebenenmodell 150Ebenenordner erstellen 152in Führungsebene umwandeln

200löschen 151Maske zuweisen 220mit Ebenen arbeiten 150

Name ändern 151Negativbeispiel 151Ordner 152Ordner steuern 152Posenebene 235Reihenfolge 151Rotation 210sperren 154steuern 153Tween 173

echo 674, 714Echte Kursive 250Eckpunkt 187Eckrundungen 96, 493Eclipse 836ECMA 327ECMAScript 727Effekt 554Eigene Klassenpfade 454Eigene Pakete 456Eigenschaften 451

Bewegungs-Tween 177Einbettung 620

in HTML 293mit dem SWFObject 301mittig positionieren 316

Einblenden 554Eingabefokus 628Eingabehilfen 321

Symbole 322Eingabetextfelder 617Eingebettete Schriften 263Eingebettete Videos 595Einstellungsmanager 863Einzeilig 619Elastic 434Elemente

gemeinsam nutzen 146in anderen Flash-Filmen nutzen

146Ellipse 271Ellipsenförmige Bewegung 422Ellipsengrundform 98Ellipsenwerkzeug 97Ellipse zeichnen 494E-Mail 697E-Mail-Adresse 665E-Mail-Header-Injection 698E-Mail-Link 255E-Mail-Verknüpfung 255embedFonts 639, 645EMBED-Tag 301

Page 82: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

882  | Index

Emulieren 841endFill 488Endlose Ausführungen 364Endlosschleifen 357, 675Endloswiederholungen 561ENTER_FRAME 381, 398Entwicklungsumgebung 46

anpassen 57Eolas-Patentverletzung 301Equalizer 576Ereignis-Listener 376, 398, 768

entfernen 378Ereignisprozeduren 376, 398Ereignisse 376, 398, 551Error 389Error Highlighting 843Ersetzung (Text) 662Escape-Sequenzen 634event 606Event.ADDED_TO_STAGE 381Event.CANCEL 769Event.CHANGE 503Event.COMPLETE 382, 383, 574,

758, 762, 769Event.ENTER_FRAME 381, 398Event.EXITING 835Event.ID3 560, 574Event.INIT 382, 383Event.MOUSE_LEAVE 788Event.OPEN 384, 769Event.REMOVED_FROM_STAGE

381Event.SELECT 758, 765, 770Event.SOUND_COMPLETE 562,

575Event.UNLOAD 384exec 661EXITING 835exp 427Experten-Modus 330Expo 434Export 320

Bild 320Film 320für ActionScript 375, 558für gemeinsame Nutzung zur

Laufzeit 145, 644Exporteinstellungen 586, 589Exportformate 320extends 476ExternalInterface 856Externe Bibliothek 146

Externes Video mit Playback- Komponente laden 593

Externe Videos 597

FF4V 583FadeOut 408Fading-Animation 411Fallunterscheidung 349false 338FAQ 305, 777Farbe anpassen 531Farbeimer 113

Lückengröße 113Farbeimerwerkzeug

Füllung sperren 114Farbeinstellungen 212Farbharmonieregel 73Farbpalette bearbeiten 72Farbschema 73

bearbeiten 73erstellen 73

Farbton 211, 531Farbverlauf 115

über mehrere Formen 114Farbe einfügen 115Farbe entfernen 116linear 115, 221radial 116transparente Farbe 222

Farbverlauf – Geschliffen 531Farbverlauf – Glühen 531Farbverlaufsfüllungen 494Farbverlaufslinien 494Farbverlaufswerkzeug 117FDT 845Feder 38, 240

aktivieren 240Feed 733Fehlende Schriften ersetzen 269Fehlerbehebung 454Fehlermeldungen 394Fehlersuche 389Fehlerursachen 394Felder 338, 705Feldwerte 343Fenster

maximieren 57minimieren 57schließen 57verankern 58Werkzeuge 51

Fenstermodus Veröffentlichung 296

Feueranimation 84, 89FFTMode 576FileFilter 766fileList 781File Packager 581File Promises 835FileReference 757

Dateiendungen 771Download 761Eigenschaften 770Ereignisse 768Fehlerursachen 777Fortschrittsanzeige 763Methoden 767Upload 765, 777

FileReference.creationDate 770FileReferenceList 781FileReference.modificationDate

770FileReference.name 770FileReference.size 770FileReference.type 770FileZilla 755Film exportieren 853

Dateiformate 320, 321Film komprimieren 289Filter 529, 531filters 534final 475Fixierung anwenden/aufheben 457Flaches Bitmap 523, 528Flammenpinsel 84, 89Flash Builder 44, 836Flash Catalyst 837Flash Components 498Flash-Cookie 801Flash-Datei (ActionScript 3.0) 335Flash Debug Player 389Flash Decompiler Trillix 855FlashDevelop 842Flash Development Tools 845flash.display 366Flash-Ebenen 526Flash-Export 286

ausgeblendete Ebenen exportieren 289

Debugging erlauben 291Film komprimieren 289Gerätesound exportieren 289Größenbericht 290

Page 83: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Index | 883

Sicherheit bei lokaler Wiedergabe 292

Skript-Höchstzeit 292Soundeinstellungen übergehen

289SWC exportieren 290Trace-Aktionen übergehen 291Version 286vor Import schützen 291

Flash-FilmBildrate 57Größe 57Hintergrundfarbe 57mittig im Browser 316mittig im Browser am oberen und

unteren Rand 318testen 50transparent 313

Flash Games 819Flash gegen HTML 5 35Flash-Historie 29Flash-JavaScript 49Flash Lite 840Flashloaded 498Flash Media Server 582, 593Flash Player

Kontextmenü 311Version 286

Flash Player Trust 864Flash-Player-Verbreitung 328Flash-Player-Versionen testen 856Flash-Spiele 819FlashVars 305

einsetzen 307FlashVars Zugriff aus Flash 305Flash-Version

aktivieren 51deaktivieren 51feststellen 294registrieren 51

Flash Video 583Flash-Video-Formate 583FLA-Wiederherstellung 855fl.controls 500Flex 835Flex Builder 836Flex-Charting-Komponenten 836Flex SDK 842Fließkommazahl 706FLOAT 706floor 427, 800flowComposer 657

fl.transitions 429Fluchtpunkt 112flush 802FLV-Format 583FLV in SWF einbetten und in Zeit-

leiste abspielen 593FLV-Media Player 585FLV Player 585FocusEvent.FOCUS_IN 629FocusEvent.FOCUS_OUT 629FOCUS_IN 629FOCUS_OUT 629Fokus 629Folienpräsentationen 838Follow TCP Stream 689font 512, 642, 645Font 638, 645font color 624font face 624fontFamily 653fontName 645font size 624fontSize 653fontStyle 653fontWeight 653for 358, 375, 675foreach 675for-each-in 360for-in 359format 652Formatierungseinstellungen TLF-

Text 274FormatValue.AUTO 652FormatValue.INHERIT 652Formen 479

Arten 70Formmarken 216

einsetzen 216entfernen 217Reihenfolge 217

Form-Tween 212Formmarken einsetzen 216

Formularanwendungen 838Fortschrittsanzeige 862Foto (JPEG) 520Fourier-Transformation 576frame 440frameLabel 440Freihandwerkzeug

Begradigen 79Glätten 79

Frei-transformieren-Werkzeug 108

Modi 108Frequenz 546from 431From 698FROM 712FTP-Zugang 592Führungsebene 198Füllfarbe 70, 79Fülltyp 495Füllung 487

Strichlinie hinzufügen 113Funktionen 360, 675

endlose Ausführungen 364Geltungsbereich 361rekursive 363

Funktionsargumente 361Funktionsparameter 361FXG 528

GGallery 503Ganzzahl 338Gapless-Playback 563GarageBand 550Garbage Collector 372, 411Gaußscher Weichzeichner 590Gebäudepinsel 83, 88Gedankenstrich 271Gegenkathete 415Geltungsbereich 342

Dokumentklasse 465von Funktionen 361

Gemeinsame Nutzung 548, 644Gemeinsam genutzte Bibliothek

144genre 560Geometrie 412Geräteprofile 841Geräteschriftarten 258, 620, 643

Mac 258Maskierung 259Vorteil 259

Gerätesound 548Geschichte von Flash 29Geschwindigkeit 180, 404

ändern 168Gesten 834GESTURE_ZOOM 834GET 684getBounds 792getChildAt 369getChildByName 370

Page 84: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

884  | Index

getChildIndex 371getLineText 646getLocal 802getPixel 538getPixel32 540getPixels 540Getter 472getTime 681getTimer 799getVector 540g-Flag 662GIF 382, 519GIF-Export 297Gleich 350Glühen 531Globales Error Handling 835Globale Sicherheitseinstellungen

863glowFilter 440GlowFilter 534Glättungspunkt 187Golem.de 734gotoAndPlay 365gotoAndStop 365GradientBevelFilter 534GradientGlowFilter 534GradientType.LINEAR 495GradientType.RADIAL 495Gradmaß 413Grafikaustausch-Format 528graphics 479Größe durch Skalieren anpassen

587Größer als 350Größer gleich 350Groß-/Kleinschreibung TLF-Text

275groupName 504Grundfarbe 530Grundlinienverschiebung TLF-Text

279Gruppierung aufheben 121Gästebuch 715GTween 429

HH.264 583Haarlinie 77Hacker 820Haltepunkte 390Handy 839Hardwarebeschleunigung 292

Hartes Licht 531Hashfunktion 827Hashwerte 828Header-Injection 698height 367, 397, 637Helligkeit 211, 531hexColors 440hide 806Hierarchie 365Highscore 819Highscore-Sicherheit 826Hilfe 333Hilfslinie 123

anzeigen 123ausrichten 124bearbeiten 123entfernen 123sperren 125

Hilfswerkzeuge 1189-teiliges Segmentraster 118Handwerkzeug 121Hilfslinien 123Raster 125Zoomwerkzeug 122

Hineinspringen 391Hintergrundfarbe 57hitTest 789, 792hitTestObject 789, 811, 812hitTestPoint 789, 790Hüllkurve bearbeiten 554HORIZONTAL 481hspace 624HTACCESS 859HTC 840HTML, Variablen übergeben 307HTML 5 35HTML 5 gegen Flash 35HTML-Absatz 624HTML-Export 293HTML-Formatierungen 622HTML-Ladeverhalten 313HTML-Tags 624htmlText 622, 639HTML-Textfelder 622HTTP 581, 667

GET 684POST 686POST-/GET-Überwachung 688

HTTP Dynamic Streaming 581HttpFox 688HTTP-Methode 684, 686HTTPS 698

HTTP_STATUS 768, 769HTTPStatusEvent.HTTP_STATUS

768, 769Hypertext Preprocessor 667Hypotenuse 415

Ii 624id3 573ID3 560, 574if 349, 673if-else 351if-else-if 351ignoreComments 731ignoreWhitespace 732Illustrator-Import 525Im Code zusammengeführt 616img 624, 651import 454Importieren 550Importierte JPEG-Daten

verwenden 520include 711indent 625, 642Index 705Index-Reihenfolge 371Indizierte Arrays 343Inheritance 474INIT 383Inkompatibilitätsbericht 526In-Punkt 589INSERT 720Instantiierung 446InstantStorm 848Instanz 130

auf Bühne platzieren 595Instanzeigenschaften 127, 130, 462Instanzmitglied 462Instanzname 177, 398, 499In Symbol konvertieren 129int 338INT 706Integer 338InteractiveObject 369, 637, 785Interaktion 785internal 460, 461, 466Internetadresse mit Text

verknüpfen 254Internet Explorer 7 301int.MAX_VALUE 562Inverse Kinematik 230

Beispiel 235

Page 85: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Index | 885

Beschleunigung 239Bindungswerkzeug 240Bones Eigenschaften 232Bone-Werkzeug 231mit ActionScript nutzen 234Pose einfügen 237Posenanimation 240Posenebene 231Skelett-Animation 234Skelett-Hierarchie 233Steuerungspunkte ausrichten 242Verbindung entfernen 241Verbindung hinzufügen 242

IO_ERROR 383, 560, 574, 600, 677, 768, 769

IOErrorEvent.IO_ERROR 383, 560, 574, 600, 768, 769

iOS 840iPad 840iPhone 42, 840IPhone-Packager 840is 370isset 697italic 512, 642item 732

JJapanisch 651JavaScript (Zugriff) 856join 343joints 482JointStyle.BEVEL 482JointStyle.MITER 482JointStyle.ROUND 482JPEG 382, 519JPEG-Deblocking 522JPEG-Export 299JSFL-Format 49JumpEye Components 498

KKanal 548Kantenglättung 257Kapitälchen 250Kaskade 652Kennwort 619kerning 642, 653Kerning 252Key 865KeyboardEvent 786KeyboardEvent.KEY_DOWN 381,

785, 865

KeyboardEvent.KEY_UP 381, 785, 865

keyCode 786Key-Codes 865KEY_DOWN 381, 785, 865KEY_UP 381, 785, 865kill 431killDelayedCallsTo 431killTweensOf 431Kilohertz 546Kinematik 230Kinsoku Shori Type 617Klasse 446

aus Bibliothek 374dynamische 452erstellen 450, 458mit Symbol verknüpfen 467

Klassenbezeichner 448Klassenmitglieder 462Klassenname 447Klassenpfad 453, 456Klassischer Text vs. TLF-Text 273Klassische Tweens 197

Abbremsung 203an Pfad ausrichten 198, 199Beispiel 199Beschleunigung 203, 206erstellen 197Führungsebene 198in Führungsebene umwandeln

200kein Bewegungspfad 197Pfad hinzufügen 198Schlüsselbilder einfügen 200Timing 202

Kleiner als 350Kleiner gleich 350Kodierung 585Kollation 704Kollisionserkennung 789

Begrenzungsrahmen 790pixelbasiert 792pixelbasiert (transformiert) 794positionsbasiert 796punktbasiert 790

Kommagetrennt 344Kommentarblock anwenden 333Kommentare 589, 673, 731

entfernen 333Kommentarfunktionen 335Kommunikation zwischen zwei

Flash-Filmen 857

KomponentenEigenschaften 501Ereignisse 502Methoden 501Typ anpassen 511UIScrollBar 648Video-Playback 593

Komponentenparameter 499Komprimierung 520, 548Konstruktor 449Kontaktformular 689Kontextmenü 51Kontrast 531Kontrolle des Ladevorgangs 382Konturansicht 154, 171Konturformat 643Koordinatensystem 412Kosinus 415Kreisbewegung 422Kreiszahl 413, 428Kreis zeichnen 97, 494Kryptografie 827Kuler-Bedienfeld 73Kurvensegment 100Kurven zeichnen 485Kurzschreibweise 349, 352

Llabel 504Label 504Ladefortschritt (Preloader) 860Ladeverhalten von Flash-Filmen

313Lame 563Lasso, Auswahl abschließen 105Lassowerkzeug 104Lateinisch einfach 622latin1_german1_ci 704Laufweite 655Laufzeitfehler 389Laufzeitumgebung 833Lautstärke 546, 568, 603Lautstärkeregler 603Layout

Spaltenbreite anpassen 61Zeilenhöhe anpassen 61

leading 625, 642Lebenspunkte 814leftMargin 642leftPeak 574leftToLeft 575leftToRight 575

Page 86: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

886  | Index

Leistungsvergleich von Schleifen 358

length 345, 573, 639, 731Leserichtung 251letterSpacing 512, 642li 624Ligaturen 276Lightwave 3D 850Lineal 122

anzeigen 123Linear 434LINEAR 495Linearer Farbverlauf 115lineBitmapStyle 485lineBreak 653lineGradientStyle 494lineHeight 653LineScaleMode.HORIZONTAL 481LineScaleMode.NONE 481LineScaleMode.NORMAL 481LineScaleMode.VERTICAL 481lineStyle 480lineThrough 653lineTo 480Linien 479

gerade Linie erzeugen 100Kurve erzeugen 100verbinden 77

Linienenden 482Liniensegment 100Linienwerkzeug 74Linker Kanal 554List 502ListEvent 750Live Error Highlighting 846Live-Vorschau 498LN2 428LN10 428Länge/Set 705load 382, 558, 559, 573, 687, 730,

757, 767Loader 368, 382LocalConnection 857LOCAL_WITH_FILE 856log 427LOG2E 428LOG10E 428Login 710Lokaler Geltungsbereich 342Lokaler Speicher 801Lokaler Videoplayer 584Lokaler Webserver 669

Lokale Speicherung 760LONGTEXT 706Loopen 409loose typing 339Lose Typisierung 339Löschen 458, 531

MMacMouseWheelHandler 860mail 697MAMP 669Manueller Zeilenumbruch 625Masken 218Maskenebene 219, 220

Farbe 219Maskierung 723

von Geräteschriften 260Math.abs 427Math.acos 427Math.asin 427Math.atan 427Math.atan2 424, 427Math.ceil 427Math.cos 427Math.E 428Math.exp 427Math.floor 427Math.LN2 428Math.LN10 428Math.log 427Math.LOG2E 428Math.LOG10E 428Math.max 427Math.min 427Math.PI 413, 428Math.pow 427Math.random 427Math.round 428Math.sin 428Math.sqrt 415, 428Math.SQRT1_2 428Math.SQRT2 428Math.tan 428Matrix 495Matrix für Farbverläufe 495Maus 369, 381, 785

Ereignisse 788, 789Mausrad 787Mausrichtung 424Maussteuerung 787Mauszeiger

ausblenden 806

einblenden 818max 427maxChars 639max_execution_time 778Maximale Zeichenanzahl 619max_input_time 778MAX_VALUE 562Maya 850MD5 827MEDIUMINT 706MEDIUMTEXT 706Mediävalziffern 271Mehrdimensionale Arrays 345Mehrere Argumente 362Mehrspaltiger Text 657Mehrzeilig 619memory_limit 778Menü

Ansicht 48Bearbeiten 47Befehle 49Datei 47Debuggen 50Einfügen 49Fenster 51Hilfe 51Modifizieren 49Steuerung 50Text 49Zeitleiste 48

Menüleiste 47Metadaten 591method 687Methoden 452Microsoft SQL Server 701Mikrofon 835min 427MinimalComps 498Minuskelziffern 271Minute 468Mischfarbe 530Mischmodi 529, 533MITER 482Mitglieder 462mitterLimit 482Mobile Endgeräte 839modificationDate 770Modulo 348Mojikumi 617MonsterDebugger 392MorphShape 369MOUSE_DOWN 380, 787, 788

Page 87: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Index | 887

MouseEvent 376MouseEvent.CLICK 380, 788MouseEvent.DOUBLE_CLICK

380, 788MouseEvent.MOUSE_DOWN

380, 787, 788MouseEvent.MOUSE_MOVE 381,

401, 789MouseEvent.MOUSE_UP 380, 788MouseEvent.MOUSE_WHEEL

787, 789, 859MouseEvent.ROLL_OUT 380, 789MouseEvent.ROLL_OVER 380, 789MOUSE_LEAVE 788MOUSE_MOVE 381, 401, 789Mouse.show 818MOUSE_UP 380, 788MOUSE_WHEEL 787, 789, 859moveTo 486MovieClip 338, 368

Bild-für-Bild-Animation 166dynamische Klasse 809Registrierung ändern 136Tween erstellen 197verschachteln 224Vorteile 224

MP3 547, 548, 563MP3-Player 839MPEG 583MPEG 4 583multiline 639Multiplikation 348, 530Multi-Preloader 862Multi-Touch 834Muster 661MVC 649MXML 837MySQL 701

Daten an Flash übergeben 713Datenbank erstellen 703Datenbanksätze einfügen 720Datenbankverbindung herstellen

711Datentypen 705Felder bearbeiten 706Gästebuch 715phpMyAdmin 703Sicherheit 723Tabelle erstellen 704Tabellen exportieren 708Tabellen importieren 709

mysql_connect 711, 720

mysql_fetch_array 713mysql_num_rows 713mysql_query 712, 720mysql_real_escape_string 724mysql_select_db 712, 720MySQL Workbench 702

NNach links 554NACH LINKS 354Nach rechts 554NACH RECHTS 354Näherungswerte 409name 367, 370, 606, 639, 761, 770Namenskonflikte 453Namespace 395NaN 341Nativ 727Natürlicher Logarithmus 427navigateToURL 761navigation 606Navigation 384Negativ multiplizieren 530Netbook 839NetConnection 598NET_STATUS 600NetStatusEvent.NET_STATUS 600NetStream 598

Eigenschaften 603Ereignisse 600

Neue Datei 458Neuer Ordner 457Neues in Flash CS5 37

Benutzeroberfläche 37Codefragmente 43Codegenerierung 39CS Live 43Deko-Werkzeuge 40Feder 38Integration Flash Builder 44Inverse Kinematik 38iPhone 42Neue Template-Vorlagen 42SWF-Verlauf 43Text-Engine TLF 38Verbesserte Video-Funktionen 41XFL-Dateiformat 40

Neues Projekt 457new 450nextFrame 365NICHT 354NONE 481, 482

Normal 530NORMAL 481NOT 353Notepad 632Notepad++ 632, 709null 337, 372, 452, 534Null 705Number 338NUMERIC 345, 346Numerisch sortieren 345numLines 639Nur auf lokale Dateien zugreifen

864Nur auf Netzwerk zugreifen 864Nur Flash – Vollbild zulassen 601Nur zum Lesen 617

OObfuscator 832, 855Object 338OBJECT-Tag 301Objekte 445

anordnen 120erstellen 450gruppieren 120zählen 463

Objektzeichnung 70ODER 353, 354Ohne 554ol 624onCompleteParams 435onCuePoint 606, 607onMetaData 610onReverseComplete 435onReverseCompleteParams 435onUpdateParams 435OPEN 384, 769opendir 779openWithDefaultApplication 835Operatoren 348, 673

arithmetisch 348bitweise 353einfach 348is 370logisch 352Vergleich 349

OPML 733Optimal 556Oracle Database 701ORDER BY 712Ordner 152Out-Punkt 589

Page 88: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

888  | Index

override 477overSkin 515Overwrite 433

Pp 624, 650package 449paddingBottom 654paddingLeft 654paddingRight 654paddingTop 654Paket-Pfad 449, 453pan 575Papervision 3D 849ParagraphElement 655paragraphEndIndent 654paragraphSpaceAfter 654paragraphSpaceBefore 654paragraphStartIndent 654parameter 607Parameter 361, 606

Standardwerte 363unbekannte Anzahl 363

parent 364, 367Partikelsystem 84, 91Passwort 619Passwortschutz 859pause 603PDA 839Perian 585Perl 667Pfad 178, 528

Ankerpunkte entfernen 101Ankerpunkte hinzufügen 101Bewegungs-Tween 178schließen 98, 101

Pfad Umformung 179Photoshop-Import 522PHP

Daten senden 677Daten senden und empfangen

684Datentypen 673Datums- und Zeitfunktion 675Fallentscheidung 673for 675foreach 675Funktionen 675Gästebuch 715if 673Kontakformular 689Operatoren 673

php.ini 778serverseitiges Datum und Zeit

682Sicherheit 697Sprachelemente und Syntax 672Stringverkettung 673switch 674Upload 767Variablen 672Verzeichnis auslesen 779Voraussetzungen 668while 674

phpinfo 668phpMyAdmin 703PHP und MySQL 710Pi 413, 428Pinselmodus 80Pinsel-Werkzeug 79

Füllfarbe 79Glätten 79

Pipette 114Pixel auslesen 538Pixelbasierte Kollisionserkennung

792Pixelfont 266

Positionierung 268Regeln 267Schriftgröße 267Textausrichtung 267Textauszeichnung 267Wann Sie verzichten sollten 268

Pixelgrafik 31pixelHinting 481Pixel setzen 540pixelSnapping 536PixelSnapping.ALWAYS 537PixelSnapping.AUTO 537PixelSnapping.NEVER 536Pixel und Vektoren 31play 559, 573, 603, 806Plugin Switcher 856PNG 382, 519PNG-Export 300Polygon 99Polysternwerkzeug 99pop 344Popup-Fenster 856Ports 672Pose einfügen 237Posenanimation 240Posenebene 231position 566, 574

Positionierung via CSS 315Positionsbasierte Kollisionser-

kennung 796POST 686, 778PostgreSQL 701Postleitzahl 665post_max_size 778pow 427preg_replace 698Preloader 313, 382, 383, 763, 774,

860Preloader-SWF 616prependChild 742prevFrame 365private 461Private Browsing 802Privater Modus 802PROGRESS 384, 561, 574, 762, 769ProgressEvent.PROGRESS 384,

561, 574, 762, 769Progressiver Download 562, 581Projekt-Fenster 457protected 461ProTools 550Proxy 737public 451, 460Punktsyntax 502push 344Pythagoras 414Python 667

QQuad 434Quadratwurzel 428Qualität 549Quart 434Quellpfad 459

Filmbasiert 459Global 459

Quickfixes 846QuickTime 583Quick-View-Outline 847Quint 434

RRADIAL 495Radialer Farbverlauf 116Radiant 413Radiergummi 94

Form 94Größe 94

RadioButton 504

Page 89: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Index | 889

random 427Rankenfüllung 83, 84Raster 125

bearbeiten 125einblenden 101

Rasterfüllung 83, 85Rastergrafik 32Rasterlinie verschieben 120Ratios 495Rauchanimation 84, 92RAW 548readdir 779readFloat 579REAL 706Rechteck

mit abgerundeten Ecken 493ohne Außenlinie 95zeichnen 488

Rechteckgrundform 96Rechteckwerkzeug 95Rechter Kanal 554Rechtschreibprüfung 272Rechtwinkliges Dreieck 414Red5 582Refactoring 844, 847RegEx 661RegexBuddy 664register_globals 685Registrierung eines MovieClips

ändern 136Registrierungspunkt 135Reguläre Ausdrücke 661

Beispiele 663Methoden 661Text ersetzen 662

Reihenfolge Ebene 151Rekursive Funktionen 363Remote-Debug 391Remote-Debugging 292removeAll 755removeChild 372removeChildAt 372REMOVED_FROM_STAGE 381removeEventListener 378, 501,

786removeTint 441Rename 844repeat 485replace 662replaceText 646restrict 640Restwert 348

resume 603RETURNINDEXEDARRAY 346reverse 344, 435Rhino 3D 850RIA 833rightmargin 625rightMargin 642rightPeak 574rightToLeft 575rightToRight 575ROLL_OUT 380, 789ROLL_OVER 380, 789root 364rotation 367, 397Rotation 210, 413

Bildebene 210im Raum 210

rotationX 367, 398rotationY 367, 398rotationZ 367, 398round 428ROUND 482RSS 733RSS-Feed lesen 734RTMP 582Ruby 667Rückgabewert 361, 362, 449, 453Runtime Shared Library 616

SSamplingrate 548, 576Samplingtiefe 546, 548Sandbox 863Sandy 3D 849sans 258Sättigung 531save 761, 768scaleMode 481scaleX 367, 397scaleY 367, 397scaleZ 367, 397Schaltfläche 136

Aktiv 137Auf 137Darüber 137erstellen 137Gedrückt 137

Schlagschatten 531Schleifen 356, 552

Leistungsvergleich 358Schlüsselbild 155

Darstellungsweise 157

einfügen 156kopieren 158, 164leer 156löschen 156, 165Posenebene 235verschieben 158

Schneeflockensimulation 442Schreibregeln 270Schrift

Geräteschriften maskieren 260Darstellung 256eingebettete Schriften 263Feintuning 264Geräteschriftarten 258Pixelfonts 266

Schriftarteinbettung 643Schriftart-Klasse 642Schriftart-Symbol 642Schriftfarbe 249Schriftgröße 248, 642Schrifttypen TLF-Text 275Schriftwarnung 269Schriftzeichen in Vektoren

umwandeln 264Schriftzuordnung 269Schwarze Ränder 587Schwingende Bewegung 415Schwingung 415Screenreader 321Screensaver 847Screensaver Producer 848ScreenTime for Flash 848Scroller 646Scrollrad (Mac) 859scrollRect 441scrollTargetName 648SDK 836SecureSWF 856Security by obscurity 826SECURITY_ERROR 677, 768, 770SecurityErrorEvent.SECURITY_

ERROR 768, 770Security.sandboxType 856seek 603Segmentraster 118Sekunde 468SELECT 712, 758, 765, 770selectable 640selected 504send 857Sequenzen 432serif 258

Page 90: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

890  | Index

Serifen 259Server Adminstration 702Serverseitige Skriptsprache 667SET 726setChildIndex 373setComponentStyle 512setPixel 540setPixel32 541setPixels 541setSelection 646setSize 441, 500, 736setStyle 511Setter 472setTextFormat 641, 646setVector 541SGML 668SHA1 827SHA256 827ShaderFilter 534Shape 338, 368shapeFlag 791Shared Library 144

Dateigröße 147Ladeverhalten 146

SharedObject 801shift 344shortRotation 441Sicherheit 697, 723, 771, 826, 855,

858, 859, 863Sicherheits-Sandbox 863Sichtbarkeit von Anzeigeobjekten

373Silbentrennung 252SimpleButton 369sin 428Sine 434Sinus 415size 512, 642, 770, 802Skalierbarkeit 31Skalierung 209

animieren 209Skelett

Animation 234Hierarchie 233

Skinning 498Skins 510, 512Skript-Höchstzeit 292, 357Skripthilfe 330

aktivieren/deaktivieren 333Skype 672slice 344Slider 569

Slideshow 503SlowMotion 816SMALLINT 706Smartphone 839smooth 485smoothing 537SOL 802Sonderzeichen 633songName 560sort 344, 345Sortierung 345, 745, 854

absteigend 346absteigend 345alphabetisch 346numerisch 345

sortOn 344, 345, 346, 746, 854sortXMLByNode 745Sothink SWF Decompiler 855Sound 545

abspielen 561ein- und ausblenden 555Ereignis 551Import 547in der Zeitleiste 551laden 559Lautstärke 568Lautstärke steuern 569mit ActionScript 557parallel steuern 564pausieren 566Schaltfläche 552Starten 551Stopp 552Stream 552Veröffentlichung 547

SoundChannel 561, 566SOUND_COMPLETE 562, 575Soundeffekte 554Soundeigenschaften 549Sound Forge 550Soundkanal 575SoundLoaderContext 562Soundloop 552, 561

als MP3 563SoundMixer 558, 575Sound-Player 573Soundspektrum 548, 575

darstellen 576Sound-Streaming 562soundTransform 574, 602, 605SoundTransform 559, 568Soundtypen 551

span 651SpanElement 656Speicher freigeben 379Spieleprogrammierung

Highscore 819Highscore-Sicherheit 826Interaktion 785Kollisionserkennung 789SharedObject 801Sound 806Zeit 799

Spiralenförmige Bewegung 423splice 344split 781Sprache 549Sprühen-Werkzeug 81Sprite 338, 368SQL 702SQL Development 702SQL Distinct 713SQL-INJECTION 720SQL-Injections 725sqrt 415, 428SQRT1_2 428SQRT2 428SQUARE 482SSL 698, 826stage 368Stage 365, 368Standard 705Standard-Komponenten 839Standardlayout wiederherstellen

61Stapelreihenfolge 121start 403startDrag 787Starten 551static 462Statische Textfelder 247Statusübergänge 839Sternform erstellen 99Steuerung der Zeitleiste 365Steuerungspunkte ausrichten 242Steuerung von Zeitleisten 364Stift 100Stiftwerkzeug

Ankerpunkte entfernen 101Ankerpunkte hinzufügen 101Ankerpunkte umwandeln 101Pfad schließen 101

Stile 510, 511stop 364, 365, 403, 574

Page 91: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Index | 891

stopAll 558stopDrag 788Stopp 552Stream 552Streaming 563, 582stretchFaktor 576Stricheigenschaften

Benutzerdefinierte Stile 76Farbe 76Höhe 76Stil 76

Strichfarbe 70, 76Strichhöhe 76Strichlinie

Abschluss 77begradigen 102entfernen 102glätten 102in Füllung umwandeln 75, 76Verbindung 77

Strichstil 76benutzerdefiniert 76

Strikte Typisierung 339String 338strip_slashes 724strip_tags 699Stärke des Weichzeichners 590Strong 434Struktur der Zeitleiste im XFL-For-

mat 324Strukturierung von Ebenen 152Stunde 468StyleManager 512subclass 475Subject 698Subtrahieren 531Subtraktion 348Suchen 333Suchen und Ersetzen 333, 709Suchmaschinen 303super 477superglobale Arrays 701Superklasse 475swapChildren 373SWC-Dateien 290SWD-Dateien 291SWF 382SWF-Decompiler 855SWF-Einbindungsmöglichkeiten

295SWF-Einstellungen 289SWF laden 382

SWFObject 295, 301align 312Einbindungsmethode 295FlashVars 305menu 311quality 311scale 312weitere Einstellungen 303wmode 312

SWF Protector 856SWF-Schutz 855SWF Screensaver for Mac 848SWF-Verlauf 43Swift 3D 850switch 351, 674Symbol-Bearbeitungsmodus 128Symbole 127

als Klasse 467an Position bearbeiten 132bearbeiten 132Begrenzungsrahmen 134duplizieren 133erstellen 128Grafik-Symbole 127Instanzeigenschaften 127, 131Instanzen 130in Symbol konvertieren 129konvertieren 129MovieClip-Symbole 127Positionierung 134Registrierung 129, 135Registrierung ändern 136Schaltflächen-Symbole 128Schriftart-Symbole 128Verschachtelung 127

Symbolinstanz 130Symboltyp 594Symmetriepinsel 83, 86Synchronisation 551Syntax überprüfen 333, 334Syntax-ToolTip 844System.useCodePage 632Szenen 158

ansteuern 160Bildbezeichner 159Dateigröße 159duplizieren 158erstellen 158vermeiden 159verwalten 158Vor- und Nachteile 159

Ttab 651Tabellen exportieren 708tabIndex 628, 639Tablet-PC 839tabstops 625Tabulator-Reihenfolge 628tan 428Tangens 428target 377, 642Tastatur 369, 381, 785Tastaturbefehle deaktivieren 785,

865Tastaturkurzbefehle 63

definieren 65Menü 64Standard wiederherstellen 66

Tastatursteuerung 785Tate Chu Yoko 617tcy 651Teilen 264Telefonnummer 665Tellerrand 833test 661Testen 550text 622, 639Text 243

als Grafik einfügen 265Anti-Aliasing 257Ausrichtung 251auswählbar 256Auszeichnungen 249Bitmap-Text 264Blocksatz 252Breite anpassen 244Dokument laden 631dynamische Textfelder 617dynamisch zuweisen/abfragen

622Eigenschaften 246Eingabe beenden 244Eingabefokus 629Eingabetextfelder 617eingebettete Zeichen 265E-Mail-Verknüpfung 255Farbe 248fehlende Schriften ersetzen 269Feld-Eigenschaften 637Felder mit ActionScript 637feste Breite 243Fettdruck 250Fluss steuern 649

Page 92: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

892  | Index

formatieren 247Größe 248hoch-/tiefstellen 254HTML-Formatierungen 624HTML-Textfelder mit eingebetter

Schrift 623Kapitälchen 250Kontrast 249Kursiv 250laden 758linksbündig 251mehrspaltig 657mehrzeilig 243mit Anti-Aliasing 263mittig 251mit URL verknüpfen 254Neigung 246ohne Anti-Aliasing 264Rahmen 619rechtsbündig 251Rechtschreibprüfung 272reguläre Ausdrücke 661Richtung 254Rotation 245Schriftart 248Schriftart-Klasse 642Schriftart-Symbol 642Schriftfarbe 249Schriftgröße 248Scroller 646Skalierung 245Tabulator 628Textfeld-Methoden 645Textfeld-Typen 246TextFormat-Klasse 640Text Layout Framework (TLF) 649transformieren 245unerwünschte Schatten 266URL-Kodierung 633Zeichenabstand 253Zeicheneinbettung 620Zeichenkodierung 631Zeilenabstand 252Zeilenlänge 253zentriert 251

TEXT 678, 706textAlign 654textAlignLast 654textAlpha 655Textausrichtung TLF-Text 280Textbreite 244textColor 639

Text-Container 656textDecoration 655Textebenen 524, 527Texteingabefelder 247Textfeld-Eigenschaften 246, 637Textfeld-Methoden 645Textfeld-Typen 246

dynamisch 247Eingabefelder 247statisch 247

TextField 338, 369, 637TextFieldAutoSize.CENTER 638TextFieldAutoSize.LEFT 638TextFieldAutoSize.NONE 638TextFieldAutoSize.RIGHT 638TextFieldType.DYNAMIC 640TextFieldType.INPUT 640textflow 650TextFlow 650, 655textformat 625TextFormat 640

Eigenschaften 642TextFormatAlign.CENTER 642TextFormatAlign.JUSTIFY 642TextFormatAlign.LEFT 642TextFormatAlign.RIGHT 642textHeight 639textIndent 655Textknoten 741TextLayoutFormat 651Text Layout Framework 649

Eigenschaften 652mehrspaltiger Text 657Vererbung 652

Textrichtung 254textRotation 655Textscroller 646Text transformieren

Neigung 246Rotation 245Skalierung 245

textWidth 639Third Party Tools 842

RegEx 664Tiefenverwaltung 418TIFF 519TileList 504time 605, 606, 778TIME 706Timer 403, 470TIMER 403TimerEvent 471

TimerEvent.TIMER 403TIMESTAMP 706Timing 202tint 441Tintenfass 113TINYINT 706TINYTEXT 706TLF-ActionScript-Bibliothek 616TLF-Text 273

ausrichten 279, 280auswählbar 274bearbeitbar 274Container und Fluss 280Dateigröße 273Eigenschaften 274formatieren 275Formatierungseinstellungen 274Groß-/Kleinschreibung 275Grundlinienverschiebung 279Hyperlink und Ziel 275Ligaturen 276nur Lesen 274Schrifttypen 275Textfelder verbinden 282Umbruch 277Veröffentlichungseinstellungen

273vs. klassischer Text 273Ziffernbreite 276Ziffernschreibweise 276

TLF-Texterstellung 273TLF-Textfeld-Eigenschaften

Ausrichtung im Container 281Maximale Zeichen 281Spalten 281Textfarbe 282Verhalten 281Zellauffüllung 282

TLF-Textfelder miteinander verbinden 282

TLFTextField 637TLS 698to 432To 698togglePause 603toString 344track 560trackingLeft 655trackingRight 655Transformationsmatrix 495Transformieren, Text 245transformMatrix 441

Page 93: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Index | 893

Transparenz 70, 211Trigonometrie 412true 338TrueSpace 850try 813Tween 429

animieren 173an Pfad ausrichten 198Beschleunigung 178, 208Bewegungs-Editor 184Bewegungspfad 201Bewegungs-Tween 172Bewegungs-Tween erstellen 172Bewegungsvorstellungen 195Drehung 178eigenen Pfad erstellen 183Eigenschaften 177erstellen 175Formmarken 216Form-Tween 212Geschwindigkeit 180Instanzname 177klassische Tweens 172klassische vs. Bewegungs-Tweens

174Länge ändern 181Optionen 177Pfad 178verlängern 176

Tween-Engines 428Tweener 429TweenEvent.MOTION_START 429Tween-Klassen 428TweenLite 429, 430

3D-Flip 435Easing 433Ereignisse 434Methoden 430Plugins 438Schneeflockenanimation 442

TweenMax 429TweenNano 429TweenPlugin 438Tweens 172

Bewegung im Raum 209Tweensy 430Typ 705type 606, 640, 770Typenkonflikt 340typeof 340typewriter 258Typisierung 339

Uu 624Überlagern 530Überschreiben 477Übersichtlichkeit 454Überspringen 391UILoader 504uint 338UIScrollBar 646ul 624Ultrashock 498Umbruch TLF-Text 277Umkehren 531Umlaute 633

sortieren 854Umwandlung, Bitmap in Vektoren

214UND 353undefined 337, 394underline 512, 642Ungleich 350Unicode 631UniRed 632UNIX-Dateirechte 686Unix-Zeitstempel 778UNLOAD 384unshift 344UNSIGNED 705Unsigned Integer 338Unterauswahl-Werkzeug 103Unterklasse 475Unterschneidung 252, 642Unterstreichung 642, 655Untypisiert 337UPDATE 726updateAfterEvent 401, 487updateAllControllers 657upload 767, 768Upload 765UPLOAD_COMPLETE_DATA 770Upload-Fortschritt 774upload_max_filesize 777Upload-Skript 767url 573, 642urlencode 679URL-Encoding 679URL-Kodierung 633, 873URLLoader 632, 678, 684, 729URLLoaderDataFormat 633, 636URLLoaderDataFormat.BINARY

678URLLoaderDataFormat.TEXT 678

URLLoaderDataFormat.VARIABLES 678, 714

URLRequest 382, 632, 695URLRequestMethod.GET 687URLVariables 687URL verknüpfen mit Text 254useCodePage 632UTF-8 680, 870, 871, 872utf8_decode 680utf8_encode 680

VValidierung 731VARCHAR 706Variablen 336, 672Variablendefinition 466

doppelte 395Variablenzugriff aus Flash 305VARIABLES 678VBR, 2-Pass 591VBScript 667Vector 347Vektoren und Pixel 31Vektorgrafik 31Vektorkonturen 524Verbindungswinkel 482Vererbung 474, 652Veröffentlichen

ActionScript-Version 288Bilder und Sounds 288Ebenen ignorieren 154Flash 286Flash-Player-Version feststellen 294GIF 297Hardwarebeschleunigung 292HTML 293HTML-Ausrichtung 296, 312JPEG 299mit und ohne JavaScript 295PNG 300Skalierung 312SWF-Einbindungsmöglichkeiten

295SWF-Einstellungen 289SWFObject 295Version 286vor Import schützen 291

VeröffentlichungseinstellungenTLF-Text 273verwenden 521

Vergleichsoperatoren 349, 350Vergrößern 122

Page 94: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

894  | Index

Verkleinern 122Verknüpfung 548, 644Verknüpfungsbezeichner 142Verlassen 391Verlaufsmasken 220

Beispiel 220Maskierung 223

Verlustbehaftet 519Verlustfrei (PNG/GIF) 519, 520Verschachtelung 166, 224

Beispiel 224Verschleierungstechnik 831Verschlüsselung 698, 827VERTICAL 481verticalAlign 655Vertikale Textrichtung 254Verzögerung und Bildrate 403Video 369, 597

Audio 592Audio-Export 589Audio-Spur steuern 602über ActionScript abspielen 599Beschnitt 587Export 586extern 597FLV in der Zeitleiste 594Import in Flash 592Kodierung 585Metadaten 591Vollbild 601Vorlagen 586Zeitleiste 588

Video-Containerformat 584Video for Flash 583Videoformate 583

Flash-Player-Versionen 584Video-Größe 586Video importieren 592Video-Objekt 597Video-Playback-Komponente 593Video-Player 584Video-Streaming 582visible 368, 438, 441, 640VLC Media Player 585void 361Vollbild 601volume 442, 568, 575, 602Voreinstellungen

Tween Bewegung 195Vorgabe 586Vorverarbeitung 549vspace 624

WW3C 297W3C-konforme Veröffentlichung

295W3C Validator 297Wasserhahn 94WAV 547Wavelab 550Webkit-Engine 835Webserver 668, 669Weichzeichnen 531Werkzeuge

3D-Drehungswerkzeug 1093D-Versetzungswerkzeug 110Deko 83Sprühen 81

Werkzeugleiste 51, 329Darstellung 52ein-/ausblenden 333Wasserhahn 94

WHERE 712, 726while 356, 674whiteSpaceCollapse 655width 367, 397, 637Wiederherstellung 855Wiederholungen 552willTrigger 379Windows Media-Datei 583Winkel 413, 424Winkelberechnung 424Wireframe 839Wireshark 688wmode 312Wohlgeformtheit 729, 730wordWrap 640World Wide Web Consortium 297Wowza Media Server 582

Xx 367, 368, 397, 637XAMPP 668

Control-Panel 670installieren 669

XARA 3D 850XFL-Datei 322

Grafiken aktualisieren 323speichern 322, 323Struktur der Zeitleiste 324Vorteile 323Wirksamwerden von Änderungen

323XML 658, 727, 820

bearbeiten 741Definition 727Elemente entfernen 743Elemente hinzufügen 741Formatierungen 738Kommentare 731laden 729sortieren 745Sortierung (nach Attribut) 747speichern 748

XMLList 733XML-Parser 729XMP 591XOR 354

Yy 367, 368, 397, 637Yahoo Astra Components 498year 560YEAR 706Yudit 632

Zz 367, 368, 397, 637z-Achse 418Zauberstab 105

Einstellungen 105Zeichenabstand 252Zeicheneinbettung 620Zeichenkette 338Zeichenkodierung 631, 680Zeichenmodi, Objektzeichnung 70Zeichentabelle 870, 871, 872Zeichentablett 79Zeichenwerkzeuge 70

Ankerpunkt entfernen 104Auswahl-Werkzeug 102Eigenschaften ändern 75Ellipsenwerkzeug 97Farbeimerwerkzeug 113Farbverlaufwerkzeug 117Freihandwerkzeug 78Lassowerkzeug 104Linienwerkzeug 74Pinsel-Werkzeug 79Pipette 114Polysternwerkzeug 99Radiergummi 94Rechteckwerkzeug 95Stiftwerkzeug 100Stricheigenschaften 75Strich- und Füllfarbe 70

Page 95: Adobe Flash CS5 - Cleverprinting...10 | Inhalt 10.5.3 Objektorientierte Projekte mit dem Projekt-Fenster verwalten.....457 10.6 Sichtbarkeit .....460 10.7 Instanz- und Klassenmitglieder

Index | 895

Tintenfasswerkzeug 113Unterauswahl-Werkzeug 103Werkzeug für Ellipsengrundform

98Werkzeug für Rechteckgrundform

96Zeichnungs-API 479Zeilenabstand 252Zeilenfall 251Zeilenkommentar anwenden 333Zeilenlänge 252

Richtwert 253Zeilentyp 618

Zeilenumbruch 651Zeit 675, 799Zeitleiste 54, 149

bei Bedarf erweitern 595Bildbezeichner 159Bilder 155Darstellungsoptionen 157Steuerung 364

Zeitleistensteuerung 365Zeitstempel 681, 820Zellauffüllung TLF-Text 282Zielpfad einfügen 333Ziffernbreite TLF-Text 276

Ziffernschreibweise TLF-Text 276ZINC 848Zoom 77Zufall 427Zugänglichkeit 321Zwiebelschaleneffekt 170

aktivieren 170Anwendungsbereich 170Konturansicht 171mehrere Bilder bearbeiten 171verankern 170

Zwischen Klammern ausblenden 333