Schnittstelle zwischen zwei Dateien mit der LocalConnection-Klasse

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.


Endergebnisvorschau

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.


Abschnitt 1: Informationen senden


Schritt 1: Neues Flash-Dokument senden

Erstellen Sie zunächst eine neue ActionScript 3.0-Datei.

Ändern Sie dann die Größe der Datei auf 600px × 250px.


Schritt 2: Senden Hintergrund hinzufügen

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.


Schritt 3: Senden Dokumentenklasse erstellen

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.


Schritt 4: Senden der Dokumentenklasse einrichten

Fügen Sie Ihrer AS-Datei ein leeres Paket, eine Klasse und eine Konstruktorfunktion hinzu.

 Paket public class Senden erweitert MovieClip öffentliche Funktion Sending () 

Schritt 5: Senden von Importklassen

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

Schritt 6: LocalConnection-Nutzung senden

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:

  • Eine Instanz der Klasse deklarieren.
  • Verwendung der .senden() Methode.

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!


Schritt 7: Senden von Variablen und Konstruktor

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

Schritt 8: Senden der mainLoop-Funktion

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


Schritt 9: Statusereignis senden

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 ;

Schritt 10: Zusammenfassung senden

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 ; 

Abschnitt 2: Informationen empfangen


Schritt 11: Empfangen eines neuen Flash-Dokuments

Erstellen Sie zunächst eine neue ActionScript 3.0-Datei.

Ändern Sie dann die Größe der Datei auf 600px × 250px.


Schritt 12: Hinzufügen eines Hintergrunds

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.


Schritt 13: Empfangen Erstellen Sie ein Objekt

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.


Schritt 14: Erhalt Dokumentenklasse erstellen

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.


Schritt 15: Empfang der Dokumentenklasse einrichten

Fügen Sie Ihrer AS-Datei ein leeres Paket, eine Klasse und eine Konstruktorfunktion hinzu.

 package public class Receiving erweitert MovieClip public-Funktion Receiving () 

Schritt 16: Importieren von Klassen

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

Schritt 17: LocalConnection-Nutzung empfangen

Wir können jetzt mit dem Schreiben des Codes beginnen, um die Informationen von der lokalen Verbindung zu erhalten. Folgendes müssen wir tun:

  • Deklarieren Sie eine Instanz der Klasse.
  • Verbinden Sie sich mit der lokalen Verbindung.
  • Stellen Sie das ein Klient für die lokale Verbindung.
  • Erstellen Sie eine Methode, um Daten von der lokalen Verbindung zu empfangen.

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 ;

Schritt 18: Empfangen der lokalen Verbindung und Schreiben der Konstruktorfunktion

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


Schritt 19: Empfangen der Funktion processData ()

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.


Schritt 20: Statusereignis empfangen

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 ;

Schritt 21: Zusammenfassung empfangen

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 ; 

Fazit

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!