In diesem Lernprogramm verwenden wir die AS3 LocalConnection-Klasse, um Daten zwischen zwei verschiedenen SWF-Dateien zu senden und zu empfangen. Heute werden wir damit Mausbewegungen in einer SWF-Datei erkennen und in einer anderen spiegeln.
Werfen wir einen Blick auf das Endergebnis, auf das wir hinarbeiten werden. Unten sind zwei völlig unterschiedliche Dateien.
Dieses Tutorial ist in zwei Abschnitte unterteilt. Die erste konzentriert sich auf die sendende SWF und die zweite umfasst den Aufbau der empfangenden SWF. In diesem Tutorial werde ich auch die Dokumentenklasse verwenden.
Erstellen Sie zunächst eine neue ActionScript 3.0-Datei.
Ändern Sie dann die Größe der Datei auf 600px × 250px.
Dieser Schritt ist nicht für die Funktionalität notwendig, sondern eher für die Ästhetik. Fügen Sie Ihr Bild der Bühne hinzu und sperren Sie dann die Ebene.
Speichern Sie Ihre FLA als Senden.la und erstellen Sie dann eine leere AS-Datei. Speichern Sie diese Datei im selben Ordner wie Ihre FLA und benennen Sie sie Senden als.
Gehen Sie dann zurück und verknüpfen Sie die Dokumentenklasse mit der FLA.
Fügen Sie Ihrer AS-Datei ein leeres Paket, eine Klasse und eine Konstruktorfunktion hinzu.
Paket public class Senden erweitert MovieClip öffentliche Funktion Sending ()
Als erstes müssen wir in unserer Dokumentenklasse alle Klassen importieren, die wir in der Zukunft benötigen werden.
package import flash.display.MovieClip; import flash.events.Event; import flash.events.StatusEvent; import flash.events.MouseEvent; import flash.net.LocalConnection; public class Sending erweitert MovieClip öffentliche Funktion Sending ()
Bevor wir mit dem Senden von Informationen mit einer lokalen Verbindung beginnen, sollten Sie am besten genau wissen, wie Sie diese verwenden. Das ist wirklich einfach und besteht nur aus zwei Teilen:
Das Deklarieren einer Instanz der Local Connection-Klasse ist einfach:
private var localConnection: LocalConnection = new LocalConnection ();
Als nächstes müssen wir die verwenden .senden Methode. Diese Methode stellt eine Verbindung mit der anderen SWF-Datei her und löst dann eine Funktion in der Empfangsdatei aus, die alle Variablen verarbeitet, die über gesendet werden. Sehen wir uns ein Beispiel an:
localConnection.send ("_ Verbindungsname", "Methodenname", Variable1, Variable2);
Sowohl der Verbindungsname als auch der Methodenname sollten in Anführungszeichen gesetzt werden (da sie Strings sind). Am besten beginnen Sie den Verbindungsnamen mit einem unterstreichen (_). Der Methodenname ist einfach der Name der Funktion, die in der empfangenden SWF ausgelöst werden soll. Die Funktion in der empfangenden SWF wird mit den Variablen als versehen Argumente. Lass uns jetzt das benutzen, was wir gerade gelernt haben!
Hier sind alle Variablen, die wir deklarieren müssen:
private var localConnection: LocalConnection = new LocalConnection (); private var mX: Anzahl; private var mY: Anzahl;
Nachdem wir eine Instanz unserer lokalen Verbindung deklariert haben, erstellen wir zwei Variablen. mX hält den 'x' Wert der Maus und meine hält den 'y'-Wert der Maus. Dieser Code muss vor der Konstruktorfunktion platziert werden, jedoch innerhalb der Klasse.
Als nächstes kommt die Konstruktorfunktion. Diese Funktion enthält nur eine Zeile: Hinzufügen eines Ereignis-Listeners für Event.ENTER_FRAME Veranstaltung. Wir werden die Funktion, die es aufruft, im nächsten Schritt behandeln. Hier ist die fertige Konstruktorfunktion:
öffentliche Funktion Sending () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true);
Im vorherigen Schritt haben wir einen Ereignis-Listener erstellt, der diese Funktion einmal pro Frame aufruft. Diese Funktion wird zwei Dinge tun. Die erste besteht darin, die Variablen einzustellen mX und meine gleich der Maus 'x' und 'y' Position jeweils. Die zweite besteht darin, diese beiden Variablen über die lokale Verbindung an die andere SWF-Datei zu senden.
Hier ist die fertige Funktion:
private Funktion mainLoop (e: Event): void mX = mouseX; mY = mouseY; localConnection.send ("_ mouseConnection", "processData", mX, mY);
Beim Versenden der Daten verwenden wir "_mouseConnection" als Verbindungsname und "Prozessdaten" als Methodenname. Das bedeutet, es wird versucht anzurufen Prozessdaten (mX, mY)
.
Wir sind fast fertig. Es muss nur noch das Statusereignis behandelt werden. Das LocalConnection-Objekt löst Statusereignisse aus. In diesem Projekt werden wir die Ereignisse nicht verwenden. Wenn wir jedoch nicht darauf achten, erhalten wir Fehler wie diese: 'Fehler # 2044: Nicht behandeltes StatusEvent :. Ebene = Fehler, Code = '
Wir haben das Ereignis bereits in Schritt 5 importiert. Zuerst fügen wir einen Ereignis-Listener für ein Statusereignis in der Konstruktorfunktion hinzu:
öffentliche Funktion Sending () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); localConnection.addEventListener (StatusEvent.STATUS, onStatus);
Jetzt müssen wir eine leere Funktion erstellen, um auf das Ereignis zu reagieren. Die Funktion wird aufgerufen 'onStatus'.
private Funktion onStatus (e: StatusEvent): void ;
In Abschnitt 1 haben wir gelernt, wie Sie mit der LocalConnection-Klasse Informationen über eine Verbindung an eine andere Flash-Datei senden können. Hier ist unsere fertige AS-Datei für Abschnitt 1:
package import flash.display.MovieClip; import flash.events.Event; import flash.events.StatusEvent; import flash.events.MouseEvent; import flash.net.LocalConnection; public class Senden erweitert MovieClip private var localConnection: LocalConnection = new LocalConnection (); private var mX: Anzahl; private var mY: Anzahl; öffentliche Funktion Sending () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); localConnection.addEventListener (StatusEvent.STATUS, onStatus); private Funktion mainLoop (e: Event): void mX = mouseX; mY = mouseY; localConnection.send ("_ mouseConnection", "processData", mX, mY); private Funktion onStatus (e: StatusEvent): void ;
Erstellen Sie zunächst eine neue ActionScript 3.0-Datei.
Ändern Sie dann die Größe der Datei auf 600px × 250px.
Nach wie vor ist dieser Schritt nicht für die Funktionalität erforderlich, sondern eher für die Ästhetik. Fügen Sie Ihr Bild der Bühne hinzu und sperren Sie dann die Ebene.
Wir müssen jetzt ein Objekt erstellen, um den Mauszeiger zu spiegeln. Es wird dasselbe gegeben X und Y Werte als Mauszeiger in der anderen Datei über ActionScript.
In diesem Beispiel verwende ich ein Bleistiftsymbol (mit freundlicher Genehmigung von WeFunction). Importieren Sie das Symbol auf der Bühne in einer eigenen Ebene, konvertieren Sie es in einen MovieClip und geben Sie ihm einen Instanznamen Cursor_MC.
Standardmäßig befindet sich der Registrierungspunkt (das Kreuz, nicht der Kreis) in der oberen linken Ecke. Das bedeutet, dass sich der Stift nach Abschluss des Projekts etwas von der Position der Maus entfernt befindet. Doppelklicken Sie zum Fixieren auf den Stift und richten Sie ihn so aus, dass sich das Ende des Stiftes auf dem Registrierungspunkt befindet.
Speichern Sie wie im ersten Teil Ihre FLA als Empfangen und erstellen Sie dann eine leere AS-Datei. Speichern Sie diese Datei im selben Ordner wie Ihre FLA und benennen Sie sie Empfangen als.
Gehen Sie dann zurück und verknüpfen Sie die Dokumentenklasse mit der FLA.
Fügen Sie Ihrer AS-Datei ein leeres Paket, eine Klasse und eine Konstruktorfunktion hinzu.
package public class Receiving erweitert MovieClip public-Funktion Receiving ()
Importieren Sie wie gewohnt alle benötigten Klassen.
package import flash.display.MovieClip; import flash.events.Event; import flash.events.StatusEvent; import flash.net.LocalConnection; public class Receiving erweitert MovieClip öffentliche Funktion Receiving ()
Wir können jetzt mit dem Schreiben des Codes beginnen, um die Informationen von der lokalen Verbindung zu erhalten. Folgendes müssen wir tun:
Das Deklarieren einer Instanz der Local Connection-Klasse ist dieselbe wie zuvor:
private var localConnection: LocalConnection = new LocalConnection ();
Als Nächstes müssen wir eine Verbindung zu der Verbindung herstellen, die wir beim Senden der Daten aus der anderen Datei erstellt haben.
localConnection.connect ("_connectionName");
Jetzt setzen wir den Kunden. Der Client gibt das Objekt an, auf dem die Funktionen aufgerufen werden. Normalerweise ist es eingestellt diese.
localConnection.client = this;
Schließlich müssen wir eine leere Funktion erstellen, die die Daten durch ihre Argumente empfängt.
öffentliche Funktion Methodenname (Variable1: Typ, Variable2: Typ…): void ;
Nun, da wir wissen, wie man Informationen mit einer lokalen Verbindung erhält, können wir mit dem Schreiben des Skripts beginnen. Deklarieren Sie zuerst eine neue LocalConnection-Instanz. Platzieren Sie dies vor der Konstruktorfunktion in der Klasse.
private var localConnection: LocalConnection = new LocalConnection ();
Stellen Sie dann in der Konstruktorfunktion eine Verbindung zur lokalen Verbindung her und legen Sie ihren Client fest:
öffentliche Funktion Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this;
(Beachten Sie, dass wir eine Verbindung zu einer lokalen Verbindung mit derselben ID herstellen, die wir in der sendenden Datei verwendet haben.)
Wenn Informationen von der sendenden Datei gesendet wurden, wurde eine Empfangsfunktion oder -methode benannt. In diesem Projekt habe ich die Funktion verwendet Prozessdaten(). Die folgende Funktion erhält die X und Y Koordinaten als Argumente und verwendet sie dann, um die Position des Stiftes festzulegen.
öffentliche Funktion processData (mX: Number, mY: Number) Cursor_mc.x = mX; cursor_mc.y = mY;
Diese Funktion muss a sein Öffentlichkeit Funktion, damit über die lokale Verbindung darauf zugegriffen werden kann.
Da wir eine lokale Verbindung verwenden, müssen wir wie in Abschnitt 1 Statusereignisse behandeln. Das Ereignis wurde bereits in Schritt 16 importiert. Nun müssen wir einen Ereignis-Listener für die Ereignisse hinzufügen. Fügen wir der Konstruktorfunktion eine Zeile hinzu:
öffentliche Funktion Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this; localConnection.addEventListener (StatusEvent.STATUS, onStatus);
Dann erstellen wir eine leere Funktion, um auf den Ereignis-Listener zu reagieren:
private Funktion onStatus (e: StatusEvent): void ;
In diesem zweiten Teil haben wir erfolgreich Informationen von einer lokalen Verbindung erhalten und verarbeitet. Hier ist unsere fertige AS-Datei:
package import flash.display.MovieClip; import flash.events.Event; import flash.events.StatusEvent; import flash.net.LocalConnection; public class Receiving erweitert MovieClip private var localConnection: LocalConnection = new LocalConnection (); öffentliche Funktion Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this; localConnection.addEventListener (StatusEvent.STATUS, onStatus); public function processData (mX: Number, mY: Number) Cursor_mc.x = mX; cursor_mc.y = mY; private Funktion onStatus (e: StatusEvent): void ;
In diesem Lernprogramm haben wir gelernt, wie die LocalConnection-Klasse verwendet wird. Sie haben gesehen, wie Sie Informationen senden, Informationen empfangen und Statusereignisse behandeln. Diese Methode wird häufig in der Web-Werbung verwendet, wenn ein Werbetreibender eine Anzeige zwischen zwei verschiedenen Anzeigenpositionen auf einer einzelnen Webseite synchronisieren möchte. Dasselbe Prinzip kann leicht entwickelt werden, um bidirektionale Kommunikation zwischen zwei Dateien zu ermöglichen.
Vielen Dank, dass Sie dieses Tutorial gelesen haben. Ich hoffe, dass es Ihnen gefallen hat!