myListener = new Object ();

myListener.onchanged = fOnChanged;

myListener.onScroller = fOnScroller;

Изначально объект object не содержит свойств onchanged и onScroller. Они будут созданы в экземпляре этого объекта myListener, который мы только что создали, и будут 'принадлежать' только этому экземпляру.

Для привязки перехватчика к текстовому блоку используется метод addListener объекта Text Field. Этот метод принимает единственный параметр — ссылку на перехватчик.

txtName.addListener(myListener);

Это выражение привязывает созданный нами перехватчик к полю ввода txtName.

Один и тот же перехватчик можно привязать сразу к нескольким текстовым блокам:

txtName2.addListener(myListener);

txtFamily.addListener(myListener);

Это значит, что события, происходящие в разных текстовых блоках, можно обрабатывать с помощью одного комплекта функций-обработчиков. Иногда это бывает полезно, особенно если обработчики, привязанные к разным текстовым блокам, делают одно и то же.

Чтобы 'отвязать' от текстового блока ненужный более перехватчик, воспользуемся методом removeListener. Этот метод в качестве единственного параметра также принимает ссылку на перехватчик.

txtName.removeListener(myListener);

Теперь останется только совсем удалить ненужный перехватчик:

delete myListener;

Создание и удаление текстовых блоков из сценариев

Flash также позволяет создавать и удалять текстовые блоки с помощью особых сценариев. Сейчас мы выясним, как это делается.

Для создания поля ввода или динамического текстового блока используется метод createTextField объекта movieClip. Формат его вызова таков:

<Клип>.createTextField(<Имя>, <Порядок перекрытия>, <Х>, <Y>,

<Ширина>, <Высота>);

Первый параметр задает имя создаваемого поля ввода или динамического текстового блока в строковом виде, а второй — его порядок перекрытия. Третий и четвертый параметры задают соответственно горизонтальную и вертикальную координаты верхнего левого угла создаваемого текстового блока относительно клипа, в котором он создается. Последние два параметра задают размеры — ширину и высоту — текстового блока. И координаты, и размеры задаются в пикселах.

Нужно помнить, что с помощью этого метода создается динамический текстовый блок, т. е. свойство type соответствующего экземпляра объекта TextField сразу же получит значение 'dynamic'. Чтобы преобразовать этот экземпляр в поле ввода, нужно присвоить свойству type строку 'input'. Например:

_root.createTextField('txtName', 0, 100, 100, 200, 50);

_root.txtName.type = 'input';

_root.txtName.variable = 'Name';

Этот сценарий создает поле ввода txtName и привязывает его к переменной Name.

Для удаления созданного с помощью метода createTextField текстового блока используется метод removeTextField объекта TextField:

_root.txtName.removeTextField();

Внимание!

С помощью действия или метода removeText Field можно удалить только те текстовые блоки, которые созданы из сценариев. Текстовые блоки, созданные вручную, не могут быть удалены таким образом.

Использование объекта Selection

Flash также предоставляет возможность управления текстовым курсором и выделением текста в текстовых блоках. Для этого предназначен объект selection, единственный экземпляр которого по имени selection создается самим Flash.

Метод get Focus этого объекта возвращает в строковом виде имя переменной, привязанной к текстовому блоку, имеющему в данный момент фокус ввода. Если к текстовому блоку не привязана переменная или если фокус ввода имеет кнопка или клип, то возвращается путь (также в строковом виде). Если ни один текстовый блок, ни одна кнопка и ни один клип не имеют фокуса, возвращается значение null.

Для того чтобы дать какому-либо текстовому блоку (а также кнопке или клипу) фокус ввода, нужно вызвать метод set Focus. В качестве единственного параметра этому методу передается путь в строковом виде:

Selection.setFocus('_root.txtName');

Selection.setFocus('_root.btnOK');

Чтобы снять фокус ввода со всех элементов управления, достаточно передать методу setFocus в качестве параметра значение null.

С помощью объекта selection мы можем получить позицию текстового курсора в поле ввода. Для этого достаточно вызвать не принимающий параметров метод get Caret index, который вернет нам номер символа, на котором стоит курсор. (Не стоит забывать, что нумерация символов начинается с нуля.) Если же ни одно поле ввода не имеет фокуса, возвращается значение — 1.

Методы getBeginindex и getEndindex возвращают номера соответственно начального и конечного символа выделенного в текстовом блоке фрагмента текста. Если ничего не выделено, также возвращается значение — 1.

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

1

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату
×