Руководство по actionscript. часть 2, стр. 052
Добавим новую переменную gameTimer и новый метод destroy ( ) в класс Butterfly, чтобы облегчить процесс отмены регистрации приемника для события TimerEvent. TIMER. Основной игровой таймер присваивается переменной gameTimer. Метод destroy ( ) отменяет регистрацию метода timerListener ( ) для событий TimerEvent. TIMER. Рассмотрим код класса Butterfly с внесенными изменениями, которые выделены полужирным шрифтом:
package { import flash. display.*; import flash. events.*; import flash. utils.*;
public class Butterfly extends Sprite { private var gameTimer:Timer;
public function Butterfly (gameTimer:Timer) { this. gameTimer = gameTimer;
this. gameTi mer. addEventLi stener(Ti merEvent. TIMER. timerLi stener);
}
private function timerListener (e:TimerEvent):void { traceCCalculating new butterfly position…»);
// Вычисление нового местоположения бабочки (код не показан)
public function destroy ( ):void { gameTimer. removeEventListener(TimerEvent. TIMER, timerListener);
}
}
}
Перед тем как удалить ссылку на объект Butterfly, в методе экземпляра removeButterfly ( ) класса ButterflyGame мы вызываем метод destroy ( ), как показано в следующем коде:
public function removeButterfly ( ):void { butterfly. destroy( );
butterfly = null;
}
Вызывая метод destroy ( ) перед удалением объекта Butterfly из игры, мы не позволяем методу timerListener ( ) оказаться «заброшенным» в списке приемников объекта Timer.