ActionScript: Einen Vorgang viele Male wiederholen


  Share  
|


Sie möchten eine Aufgabe mehrfache Zeiten innerhalb eines einzelnen Rahmens durchführen.

Benutzen Sie eine Schleife, um die gleichen Aufgabe mehrfachen Zeiten innerhalb eines einzelnen Rahmens durchzuführen. Z.B. können Sie a für Aussage verwenden:

für (var I = 0; I < 10; i++) {// Anzeige der 
Wert von i. trace(i); }

Wenn Sie die gleichen Tätigkeit (oder geringfügige Veränderungen davon) mehrfachen Zeiten innerhalb eines einzelnen Rahmens durchführen möchten, verwenden Sie eine schlingenaussage, um Ihren Code succinct, einfacher zu bilden zu lesen, und einfacher zu aktualisieren. Sie können eine Weileaussage oder ein a für Aussage zu diesem Zweck verwenden, aber im Allgemeinen ist a für Aussage die bessere Wahl. Beide Aussagen erzielen das gleiche Resultat, aber für Aussage ist kompakter und zu den meisten Programmierern vertrauter.

Die Syntax von a für Aussage besteht aus fünf grundlegenden Teilen:

Für Schlüsselwort

Jedes für Aussage muß mit a für Schlüsselwort anfangen.

Initialisierung Ausdruck

Die Schleife setzt gewöhnlich eine Indexvariable ein (alias einen Schleife Kostenzähler) die initialisiert wird, wenn die Aussage zuerst angetroffen wird. Die Initialisierung wird nur einmal durchgeführt unabhängig davon, wieviele Male die Schleife wiederholt wird.

Prüfen Sie Ausdruck

Eine Schleife sollte einen Testausdruck einschließen, der zutreffendes oder falsches zurückbringt. Der Testausdruck wird einmal jede Zeit durch die Schleife ausgewertet. Im Allgemeinen vergleicht der Testausdruck die Indexvariable mit einem anderen Wert, wie einer Höchstzahl der Schleife Wiederholungen. Der gesamte Ausdruck muß auswerten, um für auszurichten, damit Körper der Aussage durchführt (kontrastieren Sie dieses mit a. . . während Schleife, die mindestens einmal durchführt, selbst wenn der Testausdruck falsch ist). Andererseits wenn der Testausdruck nie falsch wird, verursachen Sie eine endlose Schleife, und das resultiert in einer Warnung, die der grelle Spieler langsam laufen läßt (der nach 15 Sekunden erscheint).

Updateausdruck

Der Updateausdruck aktualisiert normalerweise den Wert der Variable, die im Testausdruck verwendet wird, damit, an etwas Punkt, der Testausdruck falsch wird und in den Schleife Enden. Der Updateausdruck wird einmal jede Zeit durch die Schleife durchgeführt. Eine endlose Schleife wird häufig verursacht, indem man die passende Variable im Updateausdruck (normalerweise die gleiche Variable verwendet im Testausdruck) aktualisieren nicht kann.

Aussage Körper

Der Aussage Körper ist ein Block der substatements, die in den lockigen Klammern umgeben werden, der jede Zeit durch die Schleife durchgeführt wird. Wenn der Testausdruck nie zutreffend ist, für Körper der Aussage wird nicht durchgeführt.

Für Schlüsselwort sollte zuerst kommen, und es sollte von der Initialisierung, vom Test und von den Updateausdrücken gefolgt werden, die in Klammern umgeben werden. Semicolons müssen die drei Ausdrücke von einem trennen andere (obgleich die Initialisierung, der Test und die Updateaussagen wahlweise freigestellt sind, sind die Semicolons vorgeschrieben). Der Rest von für Schleife besteht aus dem Aussage Körper, der in den lockigen Klammern umgeben wird. Die allgemeine Form ist:

für (Initialisierung; Test; Update) {Aussage 
Körper}

Ist hier ein Beispiel von a für Aussage, die die Nr. 0 bis 999 ausgibt. Weil die Indexvariable I eine lokale Variable ist, leiten wir sie mit dem var Schlüsselwort im Initialisierung Ausdruck ein.

für (var I = 0; I < 1000; i++) {trace(i); 
} Spur (", die das Ende." ist);

Um für Aussage zu verstehen, können Sie zusammen mit dem ActionScript Interpreten als sie folgen verarbeiten den Befehl. Im vorhergehenden Beispiel für Schlüsselwort erklärt dem Interpreten, die Aussagen innerhalb für Schleife so lang durchzuführen, wie der Bedingungsausdruck zutreffend ist. Der Initialisierung Ausdruck wird nur einmal durchgeführt, und er stellt die Variable I bis 0 ein. Zunächst überprüft der Interpret den Testausdruck (i < 1000). Weil i 0 ist, das kleiner als 1000 ist, wertet der Ausdruck aus, um auszurichten und die trace() Tätigkeit innerhalb für Aussage Körper wird durchgeführt. Der ActionScript Interpret führt dann die Updateaussage, in diesem Fall i++ durch, das Stufensprünge I durch 1. Der Interpret wiederholt dann den Prozeß von der Oberseite der Schleife (aber überspringt den Initialisierung Schritt). So überprüft der Interpret wieder, ob der Testausdruck und, wenn so zutreffend ist, den Aussage Körper wieder durchführt. Er führt dann die Updateaussage wieder durch. Wiederholungen dieses Prozesses bis den Testausdruck ist nicht mehr zutreffend. Der letzte Wert, der im Ausgang Fenster angezeigt wird, ist 999, weil, sobald i bis 1000 erhöht wird, der Testausdruck nicht mehr auswertet, um auszurichten und die Schleife zu einem Ende kommt. Sobald die Schleife beendet, fährt Durchführung mit fort, was Befehle der Schleife folgen.

können die Initialisierung und Updateausdrücke die mehrfachen Tätigkeiten einschließen, die durch Kommas getrennt werden. Die folgenden des Beispiels Stufensprünge gleichzeitig I und Verminderung J und Anzeigen ihre Werte im Ausgang Fenster:

für (var I = 0, J = 10; I < 10; i++, J --) 
{trace("i ist" + i); trace("j ist" + j); }

Das vorhergehende Beispiel ist nicht dasselbe wie mit zwei genistet für Aussagen (das im folgenden Codeblock gezeigt wird).

Es ist auch Common zum Gebrauch, der für Aussagen genistet wird. Wenn Sie genistet für Aussage verwenden, verwenden Sie eine andere Indexvariable als der, der im äußersten für Schleife verwendet wird. Durch Versammlung verwendet das äußerste für Schleife die Variable I, und genistet für Schleife verwendet das variable J. Z.B.:

für (var I = 1; I < = 3; i++) {für (var J = 
1; J < = 2; j++) {trace(i + "X" + J + "=" + (i * j)); 
}}

Das vorhergehende Beispiel zeigt die folgende Vermehrungtabelle im Ausgang Fenster an:

1 X 1 = 1 1 X 2 = 2 2 X 1 = 2 2 X 2 = 4 3 X 1 = 3 3 X 2 = 
6

Es ist möglich, mehrfache Niveaus von für Aussagen zu nisten. Durch Versammlung benutzt jedes zusätzliche Niveau der Verschachtelung den folgenden Buchstaben als die Indexvariable. Folglich benutzt das dritte Niveau von genistet für Aussagen gewöhnlich k als die Indexvariable:

für (var I = 1; I < = 3; i++) {für (var J = 
1; J < = 3; j++) {für (var k = 1; k < = 3; 
k++) {trace(i + "X" + J + "X" + k + "=" + (i * J * k)); 
}}}

Zusätzlich können Sie für Aussagen pflegen, sich rückwärts zu schlingen:

//Zählimpuls rückwärts von 10 bis 1. für (var I = 10; 
I > 0; --) I {trace(i); }

Sie sollten nicht a für Aussage verwenden, um Aufgaben über Zeit durchzuführen.

Viele Programmierer machen den Fehler vom Versuchen, für Aussagen zu verwenden, Filmclips zu beleben. Z.B.:

für (var I = 0; I < 20; i++) {myMovieClip._x 
+ = 10; }

Obgleich der vorhergehende Code die Pixel des Filmclips 200 auf der rechten Seite seines Ausgangspunktes verschiebt, finden alle Updates innerhalb des gleichen Rahmens statt. Es gibt zwei Probleme mit diesem. Zuerst von allen, wird die Stadium Updates nur einmal pro Rahmen, so nur das letzte Update auf dem Stadium gezeigt (den Filmclip veranlassend, 200 Pixel plötzlich zu springen anstatt in 20 Schritte glatt bewegend). Und an zweiter Stelle, selbst wenn das Stadium häufig aktualisiert, dauert jede Wiederholung durch für Schleife nur einige Millisekunden, also würde die Animation zu schnell geschehen. Für Tätigkeiten, daß Sie über Zeit stattfinden möchten, verwenden Sie eine onEnterFrame() Zufuhr.

Außerdem sollten feste wiederholende Schleifen nicht benutzt werden, um langatmige Prozesse (allen, der mehr als ein Bruch einer Sekunde nimmt) durchzuführen. Der grelle Spieler zeigt eine Warnung an, wann immer eine einzelne Schleife für mehr als 15 Sekunden durchführt. Das Verwenden einer onEnterFrame() Zufuhr oder der setInterval() Funktion vermeidet die Warnmeldung und läßt Blitz andere Tätigkeiten zusätzlich zu den wiederholten Tätigkeiten durchführen, die ein Teil der Schleife sind.

dieses ist ein Artikel, der von Gabriel Savimbi hinzugefügt wird


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions