Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-12-2009, 17:31   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2003
Beiträge: 158
alle Listener entfernen vom Key-Object

Hi Leute,

ich hätt ne Frage. Weiß jemand, wie ich alle Listener vom Key Object 'removen' kann?

Der Hintergrund ist, dass manche Komponenten einen Listener registrieren, den aber nicht löschen. Somit wird beim erneuten laden des MCs wieder ein Listenere registriert und der Clip reagiert somit zweimal. (das Beispiel kommt aus der iTunes-Komponente)

Ich hab das Key._listeners Array gefunden, damit kann ich aber nichts bewirken.

Danke für alle Hinweise.
Gruß
Michel
Lengen1971 ist offline   Mit Zitat antworten
Alt 29-12-2009, 18:23   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Das Gegenteil von addListener ist removeListener. Steht aber auch ausführlich erklärt in der Flash-Hilfe...
  Mit Zitat antworten
Alt 11-01-2010, 14:21   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2003
Beiträge: 158
Hi,

wenn man einen Flashfilm über z.B. einen Button neu lädt, in dem ein addListener Befehl drinsteht, dann wird dieser ZUSÄTZLICH registriert, das heißt, die Funktion reagiert doppelt. removeListener kenn ich natürlich, nur weiß ich nicht, wie ich das Neuladen 'abfangen' kann um zuerst den Listener zu removen.

...aber trotzdem danke für den Versuch mit zu helfen.

Ich hab noch keine Lösung gefunden, die Kompenente findet ihr hier:
iTunesAlbumArt

Ich lade die SWF in einen bestimmten Level, die Navigation liegt in einem anderen Level. Wenn ich jetzt den Film über die Navi (nicht die HTML) neu lade, dann reagiert der Key doppelt.

Grüße
Michel
Lengen1971 ist offline   Mit Zitat antworten
Alt 11-01-2010, 15:57   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
Zitat:
Zitat von Lengen1971 Beitrag anzeigen
Weiß jemand, wie ich alle Listener vom Key Object 'removen' kann?
das kann man leider nicht listen

Zitat:
Zitat von Lengen1971 Beitrag anzeigen
Somit wird beim erneuten laden des MCs wieder ein Listenere registriert und der Clip reagiert somit zweimal.
das glaube ich nicht!? man kann nicht 2x exakt den selben listener registrieren.

wenn bei dir etwas doppelt reagiert, dann nicht deshalb. du erzeugst vermutlich selbst irgend ein objekt doppelt? bzw. das löschen klappt nicht wirklich.

wurde ein objekt gelöscht, auf das noch listener zeigen, dann laufen dessen events ins leere. da passiert also nichts tramatisches, aber es kostet unnötig rechenleistung.
wurde ein neues objekt erzeugt, dann kann das niemals das event von einem 'verstorbenen' bekommen.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (11-01-2010 um 15:59 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 13-01-2010, 09:11   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2003
Beiträge: 158
Hi,

danke hgseib für deine Hinweise.

Zitat:
das kann man leider nicht listen
doch, da gibt es ein Key._listeners Array, ist irgendwie undokumentiert aber es existiert

Zitat:
das glaube ich nicht!? man kann nicht 2x exakt den selben listener registrieren.
Leider doch, die Listener werden wohl irgendwie global registriert und nicht auf Level-Ebene. Namen sind ja nur Referenzen auf Speicheradressen und somit ist auch der Name des Listeners nicht maßgeblich.

Hier ist mal ein Demo:
iTunes-Komponente Demo
- über Button Kompenten laden
- mit Cursor navigieren, jeder Druck ist ein Album
- über Button neu laden
- jeder Druck reagiert schon zweimal
- usw.

Greez
Michel
Lengen1971 ist offline   Mit Zitat antworten
Alt 13-01-2010, 09:48   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
also das sind dinger, über die will ich nicht diskutieren ;-)

flash hat KEINEN befehl um listener zu listen.

und 2x gesetzt:
addEventListener(MouseEvent.MOUSE_UP,eventUp);
addEventListener(MouseEvent.MOUSE_UP,eventUp);
ruft eventUp NICHT 2x auf.

und nach einmal
removeEventListener(MouseEvent.MOUSE_UP,eventUp);
ist das weg. da gibts keine 2


was einzelne komponenten können und was nicht, das ist dann individuell programmiert worden. ich kann dir nur sagen, was ich vermute und wo und wie ich nach den problemen suchen würde.
mein favorit: du läds ein neues mc, aber vom 'alten' sind noch objekte übrig. das ist nicht sauber/komplett entfernt worden.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (13-01-2010 um 09:51 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 13-01-2010, 11:07   #7 (permalink)
Neuer User
 
Registriert seit: Mar 2003
Beiträge: 158
Hi nochmal,

lassen wir das, das Demo spricht für sich und ich muß eine Lösung finden.

Trotzdem danke und weiterhin viel Erfolg

Gruß
Michel

PS: Aber probier´s ruhig mal aus, wenn du schon so sicher bist:

Code:
for (x=0;x<Key._listeners.length;x++)
	{
		trace(Key._listeners[x]);
	}
Lengen1971 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
[Flash CS3] Wie kann man Listener entfernen ? sáwyer Flash Einsteiger 4 31-05-2009 22:45
Listener mit anonymer function entfernen grafgarf ActionScript 3 10 27-04-2008 19:58
Wie anonymen Listener wieder entfernen? Bartolo ActionScript 3 6 18-02-2007 20:54
listener entfernen mit for... in? bassT Softwarearchitektur und Entwurfsmuster 2 07-07-2003 10:16
listener entfernen... MrJoes ActionScript 1 2 06-06-2003 09:35


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:10 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele