Rheinwerk Design < openbook > Rheinwerk Design - Know-how für Kreative.
Know-how für Kreative

 << zurück
ActionScript 1 und 2 von Sascha Wolter (http://www.saschawolter.de/)
Objektorientierung und Codedesign mit Flash MX 2004
Buch: ActionScript 1 und 2

ActionScript 1 und 2
672 S., mit CD, Referenzkarte, 44,90 Euro
Rheinwerk Design
ISBN 3-89842-221-6
gp Kapitel 10 Kontrollstrukturen
  gp 10.1 Bedingte Anweisungen
    gp 10.1.1 if
    gp 10.1.2 else
    gp 10.1.3 else if (mehr als eine Alternative)
    gp 10.1.4 switch und break
  gp 10.2 Schleifen
    gp 10.2.1 Endlosschleifen
    gp 10.2.2 while
    gp 10.2.3 do while
    gp 10.2.4 for
    gp 10.2.5 for in
    gp 10.2.6 break
    gp 10.2.7 continue
  gp 10.3 Ausnahmebehandlung
    gp 10.3.1 try-catch-finally
    gp 10.3.2 throw


Rheinwerk Design - Zum Seitenanfang

10.2 Schleifen  downtop

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).


Rheinwerk Design - Zum Seitenanfang

10.2.1 Endlosschleifen  downtop

Abbildung
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.

Rheinwerk Design - Zum Seitenanfang

10.2.2 while  downtop

Abbildung
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!


Rheinwerk Design - Zum Seitenanfang

10.2.3 do while  downtop

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!


Rheinwerk Design - Zum Seitenanfang

10.2.4 for  downtop

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!


Rheinwerk Design - Zum Seitenanfang

10.2.5 for in  downtop

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;
 }
}

Rheinwerk Design - Zum Seitenanfang

10.2.6 break  downtop

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");
}

Rheinwerk Design - Zum Seitenanfang

10.2.7 continue  toptop

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
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: ActionScript 1 und 2
ActionScript 1 und 2
bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: JavaScript






 JavaScript


Zum Rheinwerk-Shop: jQuery






 jQuery


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


Zum Rheinwerk-Shop: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag 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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern