2012-05-03 4 views
0

Если у меня есть кнопка на временной шкале в течение первых нескольких кадров, но потом удалить его ...Timeline, слушатели событий, очистка

Должен ли я беспокоиться об удалении слушателя событий для кнопки (MovieClip), если кнопка была удалена со сцены?

Я пишу класс документа, хотя я использую объекты на временной шкале.

+3

Если вы хотите быть уверены, что сбор мусора, удаление слушателя событий. –

+0

Хм время растянуть мои ключевые кадры. Есть ли способ получить класс, чтобы удалить его собственные прослушиватели событий, когда элемент удален со сцены? – redconservatory

ответ

1

Вы можете использовать событие removedFromStage для очистки любых слушателей событий на экземпляр кнопки:

package 
{ 
    import flash.display.MovieClip; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 

    public class Button extends MovieClip 
    { 
     public function Button():void 
     { 
      addListeners(); 
     } 

     private function addListeners():void 
     { 
      this.addEventListener(Event.ADDED_TO_STAGE, addedHandler); 
      this.addEventListener(Event.REMOVED_FROM_STAGE, removedHandler); 
      this.addEventListener(MouseEvent.CLICK, clickHandler); 
     } 

     private function addedHandler(event:Event):void 
     { 
      trace("button added"); 
     } 

     private function removedHandler(event:Event):void 
     { 
      trace("button removed"); 
      removeListeners(); 
     } 

     private function clickHandler(event:MouseEvent):void 
     { 
      trace("button clicked"); 
     } 

     private function removeListeners():void 
     { 
      this.removeEventListener(Event.ADDED_TO_STAGE, addedHandler); 
      this.removeEventListener(Event.REMOVED_FROM_STAGE, removedHandler); 
      this.removeEventListener(MouseEvent.CLICK, clickHandler); 

      trace("has added listener: " + this.hasEventListener(Event.ADDED_TO_STAGE)); 
      trace("has removed listener: " + this.hasEventListener(Event.REMOVED_FROM_STAGE)); 
      trace("has click listener: " + this.hasEventListener(MouseEvent.CLICK)); 
     } 
    } 
} 
Смежные вопросы