如何在此函数中正确删除事件侦听器

问题描述:

public function doAddItem(itemConcepto:int):void{ 
       modalCfd = new modalCFDItems(); 
       modalCfd.addEventListener(Event.CLOSE, closeHandler); 
       modalCfd.addEventListener("addItemResult", addItem_resultHandler); 
       modalCfd.addEventListener("addItemResize", addItemResize_resultHandler);     
       PopUpManager.addPopUp(modalCfd, this, true) 
       PopUpManager.centerPopUp(modalCfd); 
      } 
      private function addItem_resultHandler(event:Event):void{ 
       addItemStuff(); 
       PopUpManager.removePopUp(modalCfd); 
       removeListeners("modalCfd"); 
      } 
      private function closeHandler(event:CloseEvent):void{ 
       PopUpManager.removePopUp(modalCfd); 
       removeListeners("modalCfd"); 
      } 
      public function removeListeners(listener:String):void{ 
       if(listener == "modalCfd"){ 
        modalCfd.removeEventListener("addItemResult", addItem_resultHandler); 
        modalCfd.removeEventListener("addItemResize", addItemResize_resultHandler); 
        modalCfd.removeEventListener(Event.CLOSE , closeHandler); 
       } 
      } 

正如你所看到的,我是一个具有良好实践的新手(几乎任何东西)我如何正确删除事件侦听器?这是我在那里处理的一个弹出窗口。对不起,如果该功能没有多大意义,我简化它以适应*。如何在此函数中正确删除事件侦听器

您已经有了对象的引用,所以只需在您的removelisteners函数中使用它。

public function doAddItem(itemConcepto:int):void{ 
       modalCfd = new modalCFDItems(); 
       modalCfd.addEventListener(Event.CLOSE, closeHandler); 
       modalCfd.addEventListener("addItemResult", addItem_resultHandler); 
       modalCfd.addEventListener("addItemResize", addItemResize_resultHandler);     
       PopUpManager.addPopUp(modalCfd, this, true) 
       PopUpManager.centerPopUp(modalCfd); 
      } 
      private function addItem_resultHandler(event:Event):void{ 
       addItemStuff(); 
       PopUpManager.removePopUp(modalCfd); 
       removeListeners(); 
      } 
      private function closeHandler(event:CloseEvent):void{ 
       PopUpManager.removePopUp(modalCfd); 
       removeListeners(); 
      } 
      public function removeListeners():void{ 
       modalCfd.removeEventListener("addItemResult", addItem_resultHandler); 
       modalCfd.removeEventListener("addItemResize", addItemResize_resultHandler); 
       modalCfd.removeEventListener(Event.CLOSE , closeHandler); 
      } 
+0

对不起,我添加了这个条件,因为我的模块有多个弹出窗口实例,我想创建一个函数来删除它们。但即使我删除了该条件,该功能也无法正常工作。 – overmann

+0

你知道,我说得对,我相信弹出窗口表现怪异,因为我在其他条件下将它定位错了,我不想在这里发帖。因为它可能会混淆更多。谢谢。 – overmann