Zurück   Flashforum > Flash > Flash Einsteiger

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31-12-2011, 14:36   #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);
Das sind nur ausschnitte vom Code, ich denke der Rest ist nicht relevant
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!
maronvert ist offline   Mit Zitat antworten
Alt 31-12-2011, 16:08   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
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);
}
offensichtlich definierst du deine listener in der Main-Klasse? dann z.b. so
(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)
hgseib 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 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


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele