Normalerweise tauschen Filme, die auf derselben Hauptzeitleiste laufen, ihre Daten über Variablen aus.Um aber mehrere
unabhängige Filme (sowohl Projektor-EXE als auch SWFs in verschiedenen Frames, Browsern und Applikationen etc.), bzw. Flashplayer auf demselben Client-Rechner miteinander Daten austauschen zu lassen, stellt Flash das LocalConnection-Objekt zur Verfügung. Die LocalConnection-Klasse erstellt dazu eine Art Funkverbindung zwischen einem Sender- und einem Empfängerfilm.
Für eine erfolgreiche Kommunikation sollte man folgende Aufgaben berücksichtigen:
Code:
1. Ein Senderscript öffnet einen bezeichneten Sendekanal.
2. Über diesen Kanal wird eine Nachricht gesendet, die i.d.R. einen Funktionsnamen und Funktionsparameter enthält.
3. Ein Empfängerscript öffnet einen Empfängerkanal gleicher Bezeichnung.
4. Im Empfängerscript wird die Nachricht empfangen und an die gewünschte Funktion weitergeleitet.
5. Falls gewünscht, kann das Empfängerscript auf die empfangene Nachricht reagieren und seinerseits einen Sendekanal öffnen und Daten an das Senderscript zurücksenden.
6. In der Praxis bedeutet das wiederum, dass beide Filme sowohl als Sender als auch als Empfänger fungieren können.
Schauen wir uns aber zuerst eine einfache "Einbahnstraßen"-Kommunikation an: Wir benötigen als erstes eine Kopie - die sogenannte Instanz - der LocalConnection-Klasse (der Vorgang wird deshalb auch häufig als instanziieren oder instanzieren benannt) im Sendescript. Eine Instanz wird in Flash mit dem Bezeichner "new" gebildet:
PHP-Code:
//alle Scripte liegen auf einem Schlüsselbild der jeweiligen Hauptzeitleiste!
sendekanal = new LocalConnection();
Im Empfängerfilm wird ebenso eine Instanz erstellt, der wir hier zur deutlichen Unterscheidung einen anderen Instanznamen zuweisen:
PHP-Code:
empfaengerkanal = new LocalConnection();
Jetzt müssen sich die beiden Filme nur noch einig werden, über welchen gemeinsamen Kanal sie kommunizieren wollen. Dazu nutzen wir im Sender die LocalConnection-Methode
send, der wir in der Parameterliste den Kanalnamen und eine Zielfunktion mitgeben:
PHP-Code:
sendekanal = new LocalConnection();
sendekanal.send("kanal1","meineZielfunktion");
Das Empfängerscript öffnet seinerseits einen gleichlautenden Kanal und lauscht mit der
connect-Methode der LocalConnection solange, bis es Daten vom Sender empfängt. Diese werden dann bei Bedarf zu einer Zielfunktion weitergeleitet:
PHP-Code:
empfaengerkanal = new LocalConnection();
empfaengerkanal.connect("kanal1");
empfaengerkanal.meineZielfunktion = function(){
_level0.meineTextfeldinstanz.text = "Kommunikation war erfolgreich!";//bspw. in einer Textfeldinstanz einen Hinweis geben
}
Weiterhin kann der Sender nicht nur eine Zielfunktion über den gemeinsamen Kanal senden, sondern auch zusätzliche Parameter. Das können Variablen, aber auch Objekte, Arrays, Textformat-Anweisungen und XML-Objekte sein.
Dazu ein Senderbeispiel:
PHP-Code:
sendekanal = new LocalConnection();
sendekanal.send("kanal1","meineZielfunktion","Parameter1","Parameter2");
Und so könnte dann das Empfängerscript aussehen:
PHP-Code:
empfaengerkanal = new LocalConnection();
empfaengerkanal.connect("kanal1");
empfaengerkanal.meineZielfunktion = function(para1,para2){
_level0.meineTextfeldinstanz.text = "Kommunikation war erfolgreich!";
_level0.meineTextfeldinstanz.text += "\nGesendet wurde auch "+para1;//"Parameter1"
_level0.meineTextfeldinstanz.text += "\nsowie "+para2;//"Parameter2"
}
Für weitere Informationen - besonders zu den weiteren Methoden der LocalConnection-Klasse - empfehle ich wärmstens die Flash-Hilfe (F1).