Руководство по actionscript. часть 4, стр. 083
Листинг 22.14. Синхронизация двух объектов TextField
package { import flash. display.*; import flash. events.*; import flash. text.*;
public class PhotoPanel extends Sprite { private static const defaultTitle:String =
«Photo Viewer [No photo selected]«; private static const defaultPhotoName:String =
«Enter Photo Name Here»;
private var title:TextField; private var photoname:TextField;
public function PhotoPanel ( ) { // Создаем объект TextField для строки заголовка панели title = new TextField( ); title. text = PhotoPanel. defaultTitle; title. width = 350; title. height = 25; title. border = true; title. background = true; title. selectable = false; addChild(title);
// Создаем объект TextField для заголовка отдельной фотографии
photoname = new TextField( );
photoname. text = PhotoPanel. defaultPhotoName;
photoname. width =150;
photoname. height = 30;
photoname. x = 100;
photoname. у = 150;
photoname. border = true;
photoname. background = true;
photoname. type = TextFieldType. INPUT
addChild(photoname);
// Регистрируем приемник в объекте photoname // для событий Event. CHANGE
photoname. addEventLi stener(Event. CHANGE, changeLi stener);
// Регистрируем приемники в объекте photoname для событий получения // и потери фокуса
photoname. addEventLi stener(FocusEvent. F0CUS_IN. photoFocusInListener); photoname. addEventLi stener(FocusEvent. F0CUS_0UT,
photoFocusOutListener);
// Регистрируем приемник в объекте stage // для событий потери фокуса
stage. addEventListener(FocusEvent. F0CUS_0UT, panelFocusOutListener);
// Вызывается всякий раз при добавлении
// нового текста в объект photoname
private function changeListener (e:Event):void {
// Название фотографии изменилось, поэтому обновляем строку заголовка,
// чтобы ее содержимое соответствовало тексту объекта photoname
if (photoname. text. length == 0) { title. text = «Photo Viewer [Unnamed Photo]«;
} else {
title. text = «Photo Viewer [" + photoname. text + "]«;
}
}
// Вызывается всякий раз при получении фокуса объектом photoname private function photoFocusInListener (e:FocusEvent):void { // Если для фотографии еще не было указано название… if (photoname. text == PhotoPanel. defaultPhotoName) { // …очищаем поле photoname, чтобы пользователь мог ввести название photoname. text = «»;
// Обновляем строку заголовка панели, чтобы показать, что была // выбрана фотография без названия title. text = «Photo Viewer [Unnamed Photo]«; } else {
// …выбранной фотографии уже присвоено название, поэтому обновляем // строку заголовка панели, чтобы отобразить это название title. text = «Photo Viewer [" + photoname. text + "]«;
}
}
// Вызывается всякий раз, когда объект photoname теряет фокус private function photoFocusOutListener (e:FocusEvent):void { // Если пользователь не ввел название для фотографии… if (photoname. text. length == 0) { // …присваиваем названию фотографии значение по умолчанию photoname. text = PhotoPanel. defaultPhotoName;
}
}
// Вызывается всякий раз, когда фокус теряет любой объект private function panelFocusOutListener (e:FocusEvent):void { // Если на настоящий момент ни один объект не имеет фокуса… if (e. relatedObject == null) { // …присваиваем строке заголовка панели значение по умолчанию title. text = PhotoPanel. defaultTitle;
}
}
}
}
Событие Event. SCROLL
Событие Event. SCROLL возникает всякий раз, когда изменяется значение любой из следующих переменных объекта TextField: scrollH, scrollV, maxscrollH
или maxscrollV. Другими словами, событие Event. SCROLL сообщает об одном из следующих изменений в текстовом поле:
? произошла прокрутка поля по вертикали или по горизонтали (либо пользователем, либо программным путем с помощью переменных scrollH или scrollV);
? поле получило новое содержимое, которое изменяет максимальный диапазон для вертикальной или горизонтальной прокрутки;
? изменение размеров поля привело к изменению максимального диапазона для вертикальной или горизонтальной прокрутки поля.