Know-how für Kreative

Inhaltsverzeichnis
1 Erste Schritte
2 Versionen
3 Einführung in die Programmierung
4 Die Entwicklungsumgebung
5 Regeln
6 Anweisungen und Aktionen
7 Werte und Datentypen
8 Ausdrücke und Operatoren
9 Funktionen
10 Kontrollstrukturen
11 Dokumenten-Objektmodell und Gültigkeitsbereich (Scope)
12 Ereignisse
13 Objekterstellung
14 Vererbung
15 Movieclips
16 ActionScript 2.0
17 Komponenten
18 Codedesign und Konzeption
19 Flashdetection
20 Aussergewoehnliche Benutzerfuehrung
21 D mit Flash
22 Macromedia Central
23 HTML
24 JavaScript, ActiveX und Java
25 Flash undokumentiert
26 Vergangenheit, Gegenwart und Zukunft
27 Kurzreferenz
28 Buchtipps
29 Links
30 Die CD-ROM zum Buch
Index
Download: - ZIP, ca. 9,8 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Design / <openbook> / ActionScript | vor >>
ActionScript 1 und 2 von Sascha Wolter (http://www.saschawolter.de/) Objektorientierung und Codedesign mit Flash MX 2004
ActionScript 1 und 2 672 S., mit CD, Referenzkarte, 44,90 Euro Galileo Design ISBN 3-89842-221-6 |
| Kapitel 10 Kontrollstrukturen
|  | 10.1 Bedingte Anweisungen
|  |  | 10.1.1 if
|  |  | 10.1.2 else
|  |  | 10.1.3 else if (mehr als eine Alternative)
|  |  | 10.1.4 switch und break
|  | 10.2 Schleifen
|  |  | 10.2.1 Endlosschleifen
|  |  | 10.2.2 while
|  |  | 10.2.3 do while
|  |  | 10.2.4 for
|  |  | 10.2.5 for in
|  |  | 10.2.6 break
|  |  | 10.2.7 continue
|  | 10.3 Ausnahmebehandlung
|  |  | 10.3.1 try-catch-finally
|  |  | 10.3.2 throw
## 10.2 Schleifen Bei den Schleifen handelt es sich ebenfalls um Kontrollstrukturen: Solange eine Bedingung erfüllt ist, werden bestimmte Aktionen ausgeführt. Beim Sahneschlagen heißt es: So lange rühren, bis die Sahne steif ist (falls Sie aus einer eher südlichen Region kommen, dann heißt Sahne bei Ihnen eventuell Obers). ### 10.2.1 Endlosschleifen Hier klicken, um das Bild zu Vergrößern Abbildung 10.3 Meldung bei einer Endlosschleife Es kann bei der Programmierung passieren, dass eine Schleife endlos ist oder dass zumindest Flash glaubt, in eine Endlosschleife geraten zu sein. Dies führt dann dazu, dass die Anweisungen in einer Schleife unendlich lange ausgeführt werden und den Computer so zum Stillstand bringen. Achten Sie aus diesem Grund immer darauf, dass Bedingungen wirklich zu einem Ende einer Schleife führen. Stellen Sie sich vor, Sie hätten beim Sahneschlagen eine Bedingung gewählt, die niemals eintreten kann. Dann müssten Sie ewig Sahne schlagen. In Version 4 hat Flash die Ausführung von Aktionen im Falle einer Endlosschleife zum Schutz des Computers einfach abgebrochen. Seit Flash 5 erhält der Anwender eine wenig vertrauenserweckende Meldung (siehe Abbildung 10.3). Übrigens: Grundsätzlich vermutet Flash nach ungefähr 15 Sekunden ununterbrochener Schleifenausführung, dass es sich um eine Endlosschleife handelt. Neben den Endlosschleifen gibt es auch noch endlose Rekursionen. Dabei handelt es sich um Funktionen, die sich immer wieder selber aufrufen. Sollten mehr als 256 Aufrufe stattfinden, erkennt Flash dies und gibt innerhalb des Testmodus die folgende Meldung im Ausgabefenster aus – im Browser wird die Ausfuehrung von ActionScript kommentarlos beendet:
    256 Rekursionsstufen wurden in einer Aktionsliste überschritten.
    Es handelt sich wahrscheinlich um eine Endlosschleife.
    In diesem Film werden keine weiteren Aktionen ausgeführt.
### 10.2.2 while Hier klicken, um das Bild zu Vergrößern Abbildung 10.4 Abarbeitung der Aktionen in einer Schleife (while) Auf Deutsch bedeutet while so viel wie solange. Ein Satz wie »Solange ich nicht am Ziel bin, gehe ich einen Schritt weiter« sähe in ActionScript ungefähr so aus (das »Nicht« wird übrigens durch das Ausrufezeichen ausgedrückt):
    while (!amZiel) {
       ich.geheEinenSchritt();
    }
Die Anweisung while finden Sie innerhalb des ActionScript-Editors unter Anweisungen • Bedingungen/Schleifen. Diese Anweisung signalisiert, dass die ihr folgenden Befehle so lange ausgeführt werden, wie die angegebene Bedingung wahr (true) ist. Als Bedingung geben Sie einen beliebigen Ausdruck an, dessen Ergebnis ein boolescher Wert ist (true oder false). Die von der Bedingung abhängigen Befehle werden innerhalb von geschweiften Klammern bestimmt. Sollten Sie nur eine einzige Aktion angeben, dann dürfen Sie auf die geschweiften Klammern verzichten und anstelle von
    while (!amZiel) {
       ich.geheEinenSchritt();
    }
ebenfalls das Folgende schreiben:
    while (!amZiel) ich.geheEinenSchritt();
Beachten Sie unbedingt, dass Flash den Bildschirm während der Abarbeitung einer Kontrollstruktur nicht aktualisiert. Aus diesem Grund macht es u.a. keinen Sinn, eine kontinuierliche Bewegung mit der Hilfe einer Schleife umzusetzen! ### 10.2.3 do while Das do while unterscheidet sich vom while nur dadurch, dass Flash zuerst die Anweisungen ausführt und dann die Bedingung überprüft. Bei while wird zuerst die Bedingung überprüft und dann der Block mit den Anweisungen abgearbeitet!
    do {
       ich.geheEinenSchritt();
    } while (!amZiel);
Die von der Bedingung abhängigen Befehle werden innerhalb von geschweiften Klammern bestimmt. Sollten Sie nur eine einzige Aktion angeben, dann dürfen Sie auf die geschweiften Klammern verzichten und anstelle von
    do {
       ich.geheEinenSchritt();
    } while (!amZiel);
ebenfalls
    do ich.geheEinenSchritt(); while (!amZiel);
schreiben! ### 10.2.4 for Die Anweisung for finden Sie wie alle anderen Kontrollstrukturen innerhalb des ActionScript-Editors unter Anweisungen • Bedingungen/Schleifen. Diese Anweisung ermöglicht es ähnlich der Aktion while, Befehle so lange auszuführen, bis eine Bedingung nicht mehr wahr (true) ist. Als Bedingung geben Sie einen beliebigen Ausdruck an, dessen Ergebnis ein boolescher Wert ist (true oder false). Zusätzlich dürfen Sie noch einen Ausdruck für die Initialisierung angeben. Der dritte Parameter beschreibt einen Ausdruck, der nach jedem Schleifendurchlauf ausgeführt wird. Die von der Bedingung abhängigen Befehle werden innerhalb von geschweiften Klammern bestimmt. Sollten Sie nur einen einzigen Befehl angeben, dann dürfen Sie auf die geschweiften Klammern verzichten. Das folgende Skript erzeugt mit Hilfe einer for-Schleife einen Sternenhimmel aus vielen Sternen, die jeweils zufällig positioniert werden:
    var i;
##### 02_Programmierung\Sternenhimmel
    var x;
    var y;
    var mc;
    var anzahl;
    anzahl = 100;
    for (i=0; i<anzahl; i++) {
       // Ermittle zufällige Position
       x = Math.random()*Stage.width;
       y = Math.random()*Stage.height;
       // Erzeuge Stern
       mc = _root.attachMovie("stern", "stern"+String(i), i);
       mc._x = x;
       mc._y = y;
    }
for-Schleifen lassen sich durch while-Schleifen simulieren. Anstelle von
    for (initialisierung; bedingung; weiter) {
       // Anweisungen;
    }
schreiben Sie:
    initialisierung;
    while (bedingung) {
       // Anweisungen;
       weiter;
    }
Beachten Sie unbedingt auch für die for-Schleife, dass Flash den Bildschirm während der Abarbeitung einer Kontrollstruktur nicht aktualisiert. Aus diesem Grund macht es u.a. keinen Sinn, eine kontinuierliche Bewegung mit der Hilfe einer Schleife umzusetzen! ### 10.2.5 for in Das for in ist eine besondere Art der Schleife. Mit dieser Anweisung ist es möglich, eine Schleife über alle Bestandteile eines Objektes durchzuführen. So als ob Sie sagen würden: Für alle Einträge in meinem Adressbuch verschicke eine Einladung:
    // bewege alle MovieClips im _root auf der x-Achse um 100 Pixel
    for (var i in _root) {
     trace(i);
     var obj = _root[i];
     if (typeof obj == "movieclip") {
     obj._x = obj._x+100;
     }
    }
### 10.2.6 break Die Anweisung break beendet eine Schleife. Dies wird gerne dazu benutzt, um die Ausführung einer Schleife abzubrechen, sobald das gewünschte Ergebnis gefunden ist, um unnötige weitere Schleifendurchläufe zu vermeiden. Zwar ließe sich dies auch mit Bedingungen nachmodellieren, doch die break-Variante ist beliebter, da sie meist besser lesbar ist:
    adressen = ["Sascha", "Marc", "Peter", "Sandra"];
    for (var i in adressen) {
     if (adressen[i] == "Marc") {
     trace(adressen[i]);
     break;
     }
       trace("kein Marc");
    }
### 10.2.7 continue Die continue-Anweisung ist dem break sehr ähnlich, beendet jedoch nicht die gesamte Schleife, sondern nur den aktuellen Schleifendurchlauf und setzt die Schleife mit dem nächsten Wert fort.
    adressen = ["Sascha", "Marc", "Peter", "Sandra"];
    // Finde den ersten Namen, der mit S beginnt
    for (var i = 0; i<adressen.length; i++) {
       if (adressen[i].substr(0, 1) == "S") {
          trace(adressen[i]);
          break;
       }
       trace("ohne S");
    }
    // Finde alle Namen, die mit S beginnen
    for (var i = 0; i<adressen.length; i++) {
       if (adressen[i].substr(0, 1) == "S") {
          trace(adressen[i]);
          continue;
       }
       trace("ohne S");
    }
<< zurück | <top> | vor >>
Zum Katalog
ActionScript 1 und 2 bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchtipps
| Einstieg in ActionScript
| Einstieg in Flash 8
| Flash 8 und PHP
| Flash 8-Tutorials
| Dreamweaver 8
| Webseiten programmieren und gestalten
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

Copyright © Galileo Press GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Design]
Galileo Press GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de