as3 removeEventListener wird nicht aufgerufen.

Ich bin auf das Problem gestoßen das ich ein Eventlistener hatte der sich nicht enfernen lies.
Nach reichlich gegoogle fand ich den Grund. Die ersten 3 Parameter des removeEventListener() müssen mit den ersten 3 Parameter der addEventListener() – Methode übereinstimmen.
Den entscheidenen Hinweis fand ich
hier

removeEventListener(): Removes an event handler added to a listeners list using addEventListener. The same first 3 arguments used in addEventListener must be used in removeEventListener to remove the correct handler.

Falsch:

public function initApp():void{
	box.addEventListener(MouseEvent.CLICK, clickHandler);
}
 
public function clickHandler(event:MouseEvent):void{
	trace("click");
	box.removeEventListener(MouseEvent.CLICK,onRemoveHandler );
}
 
private function onRemoveHandler(event:MouseEvent):void{
	trace("Handler removed");
}

Richtig:

public function initApp():void{
	box.addEventListener(MouseEvent.CLICK, clickHandler);
}
 
public function clickHandler(event:MouseEvent):void{
	trace("click");
	box.removeEventListener(MouseEvent.CLICK,clickHandler );
}

box.addEventListener(MouseEvent.CLICK, clickHandler);
box.removeEventListener(MouseEvent.CLICK,clickHandler );

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>