Событие onChanged

Событие onChanged происходит при изменении пользователем содержимого текстового поля хотя бы на один символ. Если же текст заменяется программно (присвоением свойству text или переменной поля новой строки), то данное событие не возникает. Следовательно, оно присуще только полям ввода. Например:

this.createTextField("pole", 0, 200, 200, 0, 0);
pole.border=pole.autoSize=true, pole.type="input", pole.text="Введите свой текст";
pole.onChanged = function():Void {
// При изменении текста поля его новое значение будет выводиться в Output
trace(this.text);
};

Ha практике событие onChanged может быть использовано, если изменение текста в поле моментально должно сопровождаться переопределением связанного с ним параметра. По умолчанию поле ввода является листенером собственных событий. Убедиться в этом можно, трассировав массив listeners:

this.createTextField("pole", 0, 200, 200, 0, 0);
trace(pole._listeners); // Выводит: _level0.pole

Если необходимо, чтобы событие onChanged поля «слушал» какой-то внешний объект, он должен быть занесен в массив листенеров при помощи метода addListener(). Для удаления листенеров служит метод removeListener.

this.createTextField("pole", 0, 200, 200, 0, 0);
pole.addListener(this); // Делаем листенером событий поля основную
// временную диаграмму
trace(pole._listeners); // Выводит: _level0.pole _level0

Во времена Flash 4 и 5 роль события onChanged играло особое недокументированное событие changed.


Flash-сообщество имело о нем представление и довольно активно его использовало. Поэтому, анализируя созданные в старых версиях программы проекты, вы можете с ним встретиться.

Следовательно, имеет смысл его описать.

Событие _changed при изменении текста в поле ввода запускает связанную с ним подпрограмму, заданную в стиле Flash 4. Чтобы начать «следить» за некоторым полем, необходимо выполнить следующие шаги:

• Создать текстовое поле и связать его с переменной (для определенности назовем ее pole_var).

• Добавить пустой ключевой кадр на ту же временную диаграмму, на которой располагается поле. Далее создать для него метку по следующей схеме: pole_var_changed.

• На кадр pole_var_changed поместить код, который должен быть выполнен, если текст в поле изменится.

Если вы не работали во Flash 4, то особенности применения события onChanged могут показаться вам малопонятными. Дело в том, что в те далекие времена в ActionScript еще не было возможности создавать функции. Подпрограммы эмулировались при помощи кадров с метками, на которых размещался код. Используя функцию call(), можно было выполнить код кадра, не переводя на него проигрывающую головку.


Точно так же действует и событие _changed. При изменении текста в поле оно проверяет, имеется ли кадр с нужной меткой. Если имеется, то расположенный на нем код проделывается без переведения на него проигрывающей головки.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Action Script на эту тему:
Автоматическое удаление пробелов. Свойство condenseWhite
Встраивание в фильм целого шрифта
Динамическая замена выделенного текста. Метод replaceSel()
Динамическое задание выделения. Метод setSelection()
Задание и извлечение текста поля

Вернуться в раздел: Action Script / 13. Работа с текстом