Bei Activetuts + nehmen wir einige Änderungen vor. Ab jetzt verwenden unsere Tutorials, wo immer möglich, klassenbasierten Code anstelle von Timeline-Code. Dieser Quick Tip erklärt, was Sie wissen müssen.
Ich gebe es zu - manchmal ist das Codieren vollständig auf der Timeline nützlich. Dies ist eine schnelle Methode zum Testen eines Effekts und die einfachste Möglichkeit, Aktionen mit bestimmten Frames einer Animation zu synchronisieren.
Für jedes Projekt, das mehr auf Code als auf Animationen angewiesen ist, gibt es jedoch gravierende Nachteile. Der gesamte ActionScript-Code ist in der FLA-Datei eingeschlossen. Sie können die Programmierung nicht zwischen verschiedenen Entwicklern aufteilen. Sie müssen Code kopieren und einfügen, wenn Sie ihn wiederverwenden möchten, und Sie müssen den Aktionsbereich von Flash verwenden.
Die Verwendung von Klassendateien setzt Ihren Code frei. Und es ist wirklich nicht schwieriger als das Codieren auf der Timeline. es erfordert nur ein wenig mehr Setup. Ich werde Sie durch das Erstellen eines Flash-Projekts mit Klassen führen und dann eine Klassendatei detailliert aufschlüsseln.
(Ein Grund, warum wir zu Klassen wechseln, ist es, AS3-Entwicklern, die Flash nicht selbst verwenden, um unsere Tutorials zu befolgen, einfacher zu machen. Wenn Sie einer von ihnen sind, gehe ich davon aus, dass Sie bereits mit Klassen vertraut sind , aber Sie können diesen Quick Tip immer als Auffrischung lesen - ignorieren Sie einfach die Informationen zu Flash!)
Ich bin sicher, dass Sie bereits wissen, wie das geht. Öffnen Sie Flash und klicken Sie auf Datei> Neue… Flash-Datei (ActionScript 3.0). Speichern Sie es wo immer Sie möchten. Ich habe meine angerufen Beispiel fla, Es ist jedoch egal, welchen Namen Sie wählen.
Klicken Datei> Neu… ActionScript-Datei. Speichern Sie dies als Main.as im selben Ordner wie Ihr FLA.
In dieser Datei werden wir den Code einfügen, der die FLA selbst steuert, aber woher weiß Flash, wie man es findet?
Möglicherweise befinden sich Dutzende von AS-Dateien im selben Ordner wie die FLA. Daher möchte Flash nicht erraten, welche verwendet werden soll. Wir müssen es sagen.
Wechseln Sie zum Auswahlwerkzeug (Tastenkombination: V), und stellen Sie sicher, dass nichts ausgewählt ist (drücken Sie Strg-Umschalttaste-A). Öffnen Sie das Eigenschaftenfenster (Fenster> Eigenschaften).
Wenn Sie Flash CS3 verwenden, sieht es folgendermaßen aus:
Eingeben Main im Feld "Dokumentklasse" - das muss mit dem Namen Ihrer ActionScript-Datei übereinstimmen, abzüglich der Dateierweiterung ".as"…
Wenn Sie Flash CS4 verwenden, sieht es folgendermaßen aus:
In diesem Fall müssen Sie eingeben Main im Feld "Klasse". Aus irgendeinem Grund hat Adobe das "Document" -Bit abgelegt.
Sie müssen nicht alle Dateien im selben Verzeichnis aufbewahren. Schauen Sie sich diesen Quick Tip-Screencast an, wenn Sie wissen möchten, wie Sie etwas bewegen können.
Öffnen Sie Ihre Main.as-Datei und fügen Sie den folgenden Code ein:
package import flash.display.MovieClip; public class Main erweitert MovieClip öffentliche Funktion Main ()
Dies ist eine grundlegende leere Dokumentklasse. Es ist die kleinste Menge Code, die wir schreiben können, die tatsächlich ausgeführt wird. Lass mich es abbauen:
Das Paketschlüsselwort teilt Flash mit, dass der gesamte Code zwischen den geschweiften Klammern Teil einer einzelnen Gruppe ist.
Schreiben Klasse Haupt gruppiert auch Code zusammen, jedoch auf andere Weise. Klassen enthalten Funktionen und Variablen. Pakete enthalten Klassen und Importanweisungen.
Hinweis: Sie müssen Ihrer Klasse denselben Namen wie die AS-Datei geben: Main.
Wie wäre es mit Öffentlichkeit? Nun, das bedeutet nur, dass andere Klassen in Ihrem Code diese Klasse sehen können.
Diese Klasse Main wird unsere FLA antreiben. Unser FLA ist standardmäßig ein Movieclip (er hat eine Zeitleiste)..
Wir wollen Main in der Lage sein, alles zu tun, was ein Movieclip leisten kann, und noch mehr basierend auf dem Code, den wir schreiben. Mit anderen Worten, wir wollen erweitern die Funktionalität eines regulären Filmausschnitt.
(Manchmal müssen wir möglicherweise keine Animationen auf der Hauptzeitleiste der Bühne ausführen. In diesem Fall müssen Sie MovieClip nicht erweitern. Stattdessen können Sie nur Sprite erweitern. MovieClip erweitert Sprite jedoch um zusätzliche Funktionen. wie nextFrame () Funktion. Wenn Sie sich nicht sicher sind, ob Sie MovieClip oder Sprite erweitern möchten, wählen Sie MovieClip - das ist sicherer!)
MovieClip ist selbst eine Klasse.
Flash speichert nicht automatisch den Speicherort aller Klassendateien. um für unsere erweitert MovieClip Damit der Code funktioniert, müssen wir Flash mitteilen, wo sich die MovieClip-Klasse befindet. Das ist was der einführen Linie tut.
Importanweisungen werden immer innerhalb des Pakets und außerhalb der Klasse oben angezeigt.
Jede Klasse enthält eine Funktion mit demselben Namen wie die Klasse. Es heißt das Konstrukteur Funktion.
Der gesamte Code innerhalb dieser Funktion wird ausgeführt, wenn ein Objekt dieses Klassentyps erstellt wird. In diesem Fall wird Code zwischen diesen geschweiften Klammern ausgeführt, wenn die SWF-Datei geladen wird.
Machen Sie sich keine Sorgen, wenn Sie das Gefühl haben, dies noch nicht ganz zu verstehen. Sobald Sie mit dem eigentlichen Unterricht beginnen und eigene Klassen schreiben, rastet alles ein.
Wie ich in Schritt 5 gesagt habe, enthält die Konstruktorfunktion den allerersten Code, der ausgeführt wird, wenn Ihre SWF-Datei geladen wird. Lassen Sie uns etwas hinzufügen, um sicherzustellen, dass alles funktioniert:
package import flash.display.MovieClip; public class Main erweitert MovieClip public function Main () trace ("Ja, es funktioniert");
Linie 8 ist die einzige neue dort. Testen Sie Ihre SWF-Datei wie gewohnt (Steuerung> Film testen). Wenn alles gut geht, sollten Sie im Ausgabefenster "Ja, es funktioniert" erscheinen. Wenn nicht…
Wenn keine dieser Fragen hilfreich ist, bitte einen Kommentar posten.
Versuchen Sie, Ihren Main.as-Code durch Folgendes zu ersetzen:
package import flash.display.MovieClip; public class Main erweitert MovieClip public function Main () var Begrüßung: String = "Hello"; Spur (Gruß);
Einfach, richtig? Wir haben gerade eine neue String-Variable in der Konstruktorfunktion erstellt. Nun fügen wir eine neue Funktion hinzu:
package import flash.display.MovieClip; public class Main erweitert MovieClip public function Main () var Begrüßung: String = "Hello"; changeGreetingToFrench (); Spur (Gruß); public function changeGreetingToFrench (): void greeting = "Bonjour";
Hier sind einige Dinge zu beachten.
Erstens geht die neue Funktion in die Klasse und nach dem Konstruktor - Konvention ist der Konstruktor die erste Funktion in der Klasse.
Zweitens ist die neue Funktion Öffentlichkeit; Beim Codieren innerhalb einer Klasse (und nicht auf der Timeline) empfiehlt es sich, am Anfang der Zeile, die die Funktion definiert, "public" (oder "private" oder "protected", aber ich lasse diese für einen anderen Beitrag) zu setzen . Es ist nur eine Möglichkeit, anderen Klassen mitzuteilen, ob sie darauf zugreifen können oder nicht.
Drittens endet die Definition der neuen Funktion mit :Leere. Dies bedeutet nur, dass kein Wert zurückgegeben wird. Konstruktorfunktionen benötigen das nicht :Leere weil sie kippen einen Wert zurückgeben.
Wenn Sie diesen Film testen, erhalten Sie eine Fehlermeldung:
Main.as, Zeile 15: 1120: Zugriff auf undefinierte Begrüßung der Eigenschaften.
Wenn Sie eine Variable innerhalb einer Funktion erstellen, können andere Funktionen nicht darauf zugreifen. Wenn Sie möchten, dass jede Funktion in der Klasse auf die Variable zugreifen kann, müssen Sie sie jedoch innerhalb der Klasse deklarieren draußen alle Funktionen:
package import flash.display.MovieClip; öffentliche Klasse Main erweitert MovieClip public var greeting: String = "Hello"; öffentliche Funktion Main () changeGreetingToFrench (); Spur (Gruß); public function changeGreetingToFrench (): void greeting = "Bonjour";
Wenn Sie eine Variable außerhalb einer Funktion deklarieren, müssen Sie sie wie bei Funktionen mit "public" (oder "private" oder "protected") beginnen. Im Gegensatz zu Funktionen sollten Variablen definiert werden über der Konstruktor.
Testen Sie Ihren Film jetzt und Sie sollten endlich einen schönen Gruß auf Französisch erhalten. Wie nützlich!
Dies ist also nicht gerade ein aufregendes Ergebnis, aber hoffentlich fühlen Sie sich jetzt in der Lage, Tutorials zu folgen, die nicht auf der Timeline kodieren.
Ich möchte wirklich sicherstellen, dass jeder versteht, wie eine Dokumentenklasse verwendet wird. Wenn also etwas unklar ist, posten Sie bitte eine Anmerkung in den Kommentaren. Sobald wir die Verwirrung behoben haben, bearbeite ich den Schnelltipp, um die nächste Person leichter verständlich zu machen. Vielen Dank :)