Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-01-2012, 20:04   #1 (permalink)
Neuer User
 
Benutzerbild von cs5noob
 
Registriert seit: Nov 2010
Beiträge: 24
dispatchEvent in extern geladener swf abrufen

Hallo Flasher,
ich hab ein Problem, an dem ich seit einiger Zeit verzweifle.

Also, ich hab eine hauptfilm.swf. Hier lade ich zwei weitere swfs, ladefilm1.swf und ladefilm2.swf.

In ladefilm1 löse ich ein Ereignis aus. Das möchte ich im hauptfilm und im ladefilm2 abrufen. Leider schweigt der EventListener in ladefilm2.

Warum?
(Hoffentlich ist das ganz einfach zu beantworten)

Hier mal meine Codes:

hauptfilm.fla
PHP-Code:
import flash.events.MouseEvent;

//Ladefilm 1
var swf1:Loader = new Loader ();
swf1.0;
swf1.0;
var 
swf1url:URLRequest = new URLRequest ();
swf1url.url "ladefilm1.swf";
swf1.load (swf1url);
addChild (swf1);

// Ladefilm 2
var swf2:Loader = new Loader ();
swf2.0;
swf2.0;
var 
swf2url:URLRequest = new URLRequest ();
swf2url.url "ladefilm2.swf";
swf2.load (swf2url);
addChild (swf2);

addEventListener("ButtonKlick"buttonEvent); 
function 
buttonEvent(e:Event):void {
    
trace ("DispatchEvent Button in hauptfilm");

ladefilm1.fla
PHP-Code:
import flash.events.MouseEvent;

mc_Button.addEventListener(MouseEvent.CLICKButtonEvent);

function 
ButtonEvent (e:MouseEvent) {
    
trace ("Button geklickt");
    
dispatchEvent(new Event("ButtonKlick"truetrue));

ladefilm2.fla
PHP-Code:
import flash.events.MouseEvent;

addEventListener("ButtonKlick"buttonEvent); 
function 
buttonEvent(e:Event):void {
    
trace ("DispatchEvent Button in ladefilm2");

Ausgabe:
Button geklickt
DispatchEvent Button in hauptfilm

Vielen Dank schon mal.
Der OberNoob
cs5noob ist offline   Mit Zitat antworten
Alt 23-01-2012, 20:18   #2 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.041
Funktionennamen bitte klein schreiben.

Das Event blubbert nach oben, nie nach unten.
In der Hierarchie stehen beide geladenen Filme auf einer Ebene, deshalb können beide ihre Events nur zum Hauptfilm blubbern lassen.

Wenn im Hauptfilm das Event ankommt, kannst du die Event verarbeitende methode des anderen films aufrufen.

PHP-Code:
swf2.content.buttonEvent(e); 
Pass auf das es zu keiner endlosschleife kommt.
Sollte dieses Synchronisieren wechselseitig stattfinden, kannst du zB die Funktion so aufrufen:
PHP-Code:
swf2.content.buttonEvent(null); 
und dann in den jeweiligen buttonEvent methoden eine überprüfung durchführen und entsprechend dispatchen oder nicht.
Das geht natürlich nur, wenn du das Event Objekt nicht benötigst.

//code ungetestet im browser getippt
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 23-01-2012, 20:51   #3 (permalink)
Neuer User
 
Benutzerbild von cs5noob
 
Registriert seit: Nov 2010
Beiträge: 24
Danke für die schnelle Antwort.

Wenn ich das versuche:

PHP-Code:
addEventListener("ButtonKlick"buttonevent); 
function 
buttonevent(e:Event):void {
    
trace ("DispatchEvent Button in hauptfilm");
    
swf2.content.buttonevent(e);} 
Dann bekomme ich diese Fehlermeldung:
1061: Aufruf für eine möglicherweise nicht definierte Methode buttonevent über einen Verweis mit statischem Typ flash.displayisplayObject.

Sorry, aber ich check nicht, wie ich den geladenen Film anspreche.
cs5noob ist offline   Mit Zitat antworten
Alt 23-01-2012, 21:12   #4 (permalink)
Neuer User
 
Benutzerbild von cs5noob
 
Registriert seit: Nov 2010
Beiträge: 24
Ich hab jetzt eine Lösung für mein Problem gefunden.
Das war der Hinweis mit dem "nur abwärts bubblen".

Ich hab nun einfach die swfs nacheinander geladen. So bekommt jedes swf das unterhalb der obersten liegt das Event mit.
Für mein aktuelles Problem könnte das vielleicht so funktionieren. Ist aber sicher gaaaanz furchtbarer Programmierstil
Genauso wie mit den Großbuchstaben in Funktionsnamen. Macht man nicht, oder? Funzt aber trotzdem

Aber was ich immer noch nicht schaffe, ist eine Funktion innerhalb einer geladenen swf aufzurufen.
mit
geladeneswf.content.funktionsname ();
geht das nicht.
cs5noob ist offline   Mit Zitat antworten
Alt 24-01-2012, 09:00   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Arbeite auf der Ebene am besten mit definierten Interfaces. Das erleichtert das Arbeiten um einiges.
Omega Psi ist offline   Mit Zitat antworten
Alt 24-01-2012, 21:19   #6 (permalink)
Neuer User
 
Benutzerbild von cs5noob
 
Registriert seit: Nov 2010
Beiträge: 24
Hi Omega,
super Tipp, das werd ich machen. Hab schon ein bisschen rumprobiert. geht soweit, es gibt aber noch viel zu lernen für mich
Danke, dass ihr euch Zeit nehmt uns Unwissenden zu helfen.
cs5noob ist offline   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 an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Typ von extern geladener swf gaspode ActionScript 3 7 19-01-2010 22:17
dispatchEvent bei extern geladener SWF miki.kunze ActionScript 3 5 20-09-2009 10:48
variablen an extern übergeben und abrufen eichi89 Flash Einsteiger 4 17-09-2007 08:52
Soundsteuerung extern geladener swf in mc Madrid Flash Einsteiger 8 07-05-2007 16:54
framesloaded aus einem extern geladenen swf file abrufen pageraven ActionScript 1 7 08-03-2002 11:47


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:23 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele