| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Nov 2011
Beiträge: 17
| removeEventListener
Hi Ich habe 2 .as Klassen 1) Main-Klasse, die mit der .fla-Datei verbunden ist Code:
mc_los.addEventListener(MouseEvent.MOUSE_UP, los)
public function los(event:MouseEvent):void{
// Hier soll der MouseEvent-Listener "erstellen" gelöscht werden
} 2)Klasse McErstellen, die mit einem Movieclip verbunden ist Code: addEventListener(MouseEvent.MOUSE_DOWN, erstellen); ![]() Die Listener werden beide im Konstruktor der jeweiligen Klasse hinzugefügt. Ich möchte den EventListener der Klasse McErstellen beim Klick auf einen Button in der Main-Klasse entfernen Ist das möglich? Ich hoffe, ich habe das verständlich erklärt, wenn nicht, dann einfach nachfragen ![]() Danke! |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
xxx.addEventListener(MouseEvent.MOUSE_DOWN, yyy); wo auch immer, wie auch immer, du kannst einen listener entfernen, wenn dir sowohl xxx als auch yyy bekannt ist. wenn du keine referenz mehr auf das objekt xxx hast, oder wenn du von anderswo löschen willst und yyy ist z.b. private, dann gehts nicht. bei movieclips gibts das event, wenn etwas auf die bühne gestellt und wenn etwas von der bühne entfernt wird. das sind ganz gute auslöser, um listener zu setzen bzw. zu löschen. bei anderen klassen (die keinen kontakt zur stage besitzen) sollte man entsprechende destructor funktionen besitzen, die man dann halt selbst auslösen muss. z.b. Code: public function KlasseXXX() {
addEventListener(Event.ADDED_TO_STAGE,eventAdd);
addEventListener(Event.REMOVED_FROM_STAGE,eventSub);
}
private function eventAdd(evt:Event):void {
// hier z.b. für weitere initialisierungen
}
private function eventSub(evt:Event):void {
// hier zusätzlich noch alles löschen, was noch da oder eventuell noch da sein könnte
// wurde dein mouseup ausgelöst, macht nichts, es gibt keine fehlermeldung bei removeEventListener
// wurde dein mouseup nicht ausgelöst, dann ist hier die letzte gelegenheit diesen listener zu entfernen
removeEventListener(Event.ADDED_TO_STAGE,eventAdd);
removeEventListener(Event.REMOVED_FROM_STAGE,eventSub);
} (wenn möglich, alles was nur die klasse betrifft in der klasse ausführen, sonst hast du nachher 'kraut und rüben' in der Main-Klasse) Code: mc_los.addEventListener(MouseEvent.MOUSE_UP, losUp);
mc_los.addEventListener(Event.REMOVED_FROM_STAGE, removeLos);
private function losUp(event:MouseEvent):void{
destructorLos();
}
private function removeLos(event:Event):void{
destructorLos();
}
// separate function, damit man das auch ausführen kann, wenn kein mouseup erfolgt
// andernfalls müsstest du bei gegebener gelegenheit selbst ein mouseup auslösen.
private function destructorLos():void
{
mc_los.removeEventListener(MouseEvent.MOUSE_UP, losUp);
mc_los.removeEventListener(Event.REMOVED_FROM_STAGE, removeLos);
}
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (31-12-2011 um 16:39 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Flash CS5] removeEventlistener | maxiW | Flash Einsteiger | 10 | 12-05-2010 15:15 |
| removeEventListener | Rexaka | ActionScript 3 | 8 | 05-04-2009 15:24 |
| [Flash CS4] Wie removeEventListener ? | Rotti | Flash Einsteiger | 24 | 01-04-2009 10:10 |
| removeEventListener | jerry | ActionScript 3 | 10 | 20-03-2009 23:56 |
| removeEventListener() ?? | butterbrot | Softwarearchitektur und Entwurfsmuster | 5 | 10-05-2004 11:48 |