Руководство по actionscript. часть 4, стр. 089
Private function enterFrameListener (e:Event):void { // Если высота поля изменилась, запрашиваем перерисовку // полосы прокрутки
if (t. height!= tHeight) { changed = true; tHeight = t. height;
// Высота изменилась, поэтому прекращаем любую // в настоящий момент операцию перетаскивания. // будет вынужден щелкнуть снова, чтобы начать // перетаскивания ползунка после перерисовки // полосы прокрутки, if (dragging) {
scrol1 Thumb. stopDrag( );
dragging = false;
}
}
// Если требуется перерисовка полосы прокрутки… if (changed) {
// …вызываем процедуру отрисовки полосы прокрутки
updateScrollbar( );
changed = false;
}
}
// Обрабатывает события Event. SCROLL
private function scrolIListener (e:Event):void { // В определенных случаях, когда строки удаляются из текстового поля. // приложение Flash Player выполняет диспетчеризацию двух событий: // одно событие связано с уменьшением значения переменной maxScrol1V // (диспетчеризация осуществляется немедленно), а другое -// с уменьшением значения переменной scrolIV (диспетчеризация // осуществляется спустя несколько обновлений экрана). В подобных // ситуациях переменная scrolIV некоторое время имеет неправильное // значение, которое превышает значение переменной maxScrolIV. // В качестве обходного пути мы игнорируем событие, возникающее // после изменения значения переменной maxScrol1V, и ожидаем // появления события, возникающего в результате изменения значения // переменной scrolIV (в противном случае отрисованная полоса // прокрутки некоторое время не будет соответствовать фактическому // содержимому поля), if (t. scrolIV > t. maxScrollV) { return;
}
// Если на данный момент пользователь не перетаскивал ползунок полосы
// прокрутки, помечаем, что данная полоса прокрутки должна быть
// перерисована на следующем запланированном этапе обновления экрана.