Руководство по actionscript. часть 4, стр. 088
Var StageDetector:StageDetector = new StageDetector(this); StageDetector. addEventLi stener(StageDetector. ADDED_TO_STAGE.
addedToStageLi stener); StageDetector. addEventLi stener(StageDetector. REMOVED_FROM_STAGE,
removedFromStageListener);
// Регистрируем приемник для получения уведомлений перед каждым
// обновлением экрана. Перед обновлением экрана проверяем,
// требуется ли перерисовка полосы прокрутки. Информацию по событию
// Event. ENTER_FRAME можно найти в гл. 24.
addEventListener(Event. ENTER_FRAME. enterFrameListener);
// Инициируем первоначальную прорисовку полосы прокрутки, changed = true;
-}
// Выполняется всякий раз, когда данный объект добавляется // в список отображения
private function addedToStageListener (e:Event):void { // Регистрируем приемники для «глобальных» событий перемещения мыши // и отпускания кнопки мыши
stage. addEventLi stener(MouseEvent. MOUSEJJP. mouseUpLi stener); stage. addEventLi stener(MouseEvent. M0USE_M0VE, mouseMoveLi stener);
}
// Выполняется всякий раз. когда данный объект удаляется // из списка отображения
private function removedFromStageListener (e:Event):void { // Отменяем регистрацию приемников для «глобальных» событий // перемещения мыши и отпускания кнопки мыши stage. removeEventListener(MouseEvent. MOUSEJJP, mouseUpListener); stage. removeEventLi stener(MouseEvent. M0USE_M0VE, mouseMoveLi stener);
}
// Выполняется один раз для каждого обновления экрана. Этот метод // проверяет, произошли ли какие-либо изменения в позиции прокрутки // текстового поля, его содержимом или размерах с момента последней // перерисовки полосы прокрутки. Если да. то перерисовываем полосу // прокрутки. Выполняя эту проверку — «рисовать или нет» — всего один // раз перед обновлением экрана, мы избавляемся от ненужных вызовов // метода updateScrol1bar( ), а также избегаем проблем в приложении // Flash Player, связанных с задержкой при изменении значения переменной // TextField. maxScrolIV.