Руководство по actionscript. часть 2, стр. 044
В листинге 12.3 продемонстрирован еще один пример обращения к объекту получателя события, но на этот раз объект получателя находится в списке отображения. В этом примере, когда текстовое поле получает фокус ввода, цвет фона этого поля становится красным. Для обращения к объекту TextField метод f ocusInListener ( ) использует переменную экземпляра target класса Event.
*», -
^ I В листинге 12.3 применяется несколько методик, которые мы еще не рассматривали: м?. л * создание текста, установка фокуса ввода на объект, работа со списком отображения и цепочка диспетчеризации событий. Все перечисленные темы будут рассмотрены в части П. Если вы никогда не программировали объекты, отображаемые на экране, пропустите этот пример и вернитесь к нему после прочтения части И.
Листинг 12.3. Обращение к объекту получателя
package { import flash. display.*; import flash. events.*; import flash. text.*;
// Изменяет цвет фона текстового поля на красный,
// когда поле получает фокус ввода
public class HighlightText extends Sprite {
// Конструктор
public function HighlightText ( ) { // Создание объекта Sprite var s:Sprite = new Sprite( ); s. x = 100; s. y = 100;
// Создание объекта TextField
var t:TextField = new TextField( );
t. text = «Click here»;
t. background = true;
t. border = true;
t. autoSize = TextFieldAutoSize. LEFT;
// Помещение объекта TextField в объект Sprite s. addChild(t);
II Добавляем объект Sprite в иерархию отображения данного объекта addChild(s);
// Регистрируем приемник для получения уведомлений об установке // фокуса ввода на любой из потомков объекта Sprite (в данном случае // существует только один потомок: объект TextField. t) s. addEventLi stener(FocusEvent. F0CUS_IN. focusInLi stener);
}
// Приемник выполняется в том случае, когда любой из потомков объекта // Sprite получает фокус ввода
public function focusInListener (е:FocusEvent):void { // Выводит: Target of this event dispatch: [object TextField] traceC’Target of this event dispatch: » + e. target);
// Устанавливает красный цвет для фона текстового поля. Обратите // внимание, что для обеспечения безопасности типов мы приводим // значение переменной Event. target к типу TextField — фактическому // типу данных объекта получателя. TextField(e. target).backgroundColor = OxFFOOOO:
}
}
}
Упражнение: попробуйте добавить к коду листинга 12.3 приемник события FocusEvent. FOCUS_OUT, который меняет цвет фона текстового поля — делает его белым.