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 );

Schreibe einen Kommentar

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