• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Aktuelles > Tutorials > Programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-02-2006, 11:15   #1 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Kommunikation mehrerer Flashfilme untereinander

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

Geändert von agedoubleju (27-02-2006 um 11:20 Uhr)
  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele