Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Web-дизайн 1 часть / Литература / ActionScript 2.0. Программирование во Flash MX 2004.pdf
Скачиваний:
354
Добавлен:
26.03.2015
Размер:
8.81 Mб
Скачать

Используя eval(), можно динамически создать и идентификатор функции. Единственной тонкостью при этом является то, что ее круглые скобки (оператор вызова) должны располагаться вне скобок eval():

function func2() {

return "Произошел вызов!!!";

}

trace{eval("func"+2)()); // Возвращает: Произошел вызов!!!

Функция eval() не совместима с оператором присваивания (точнее, выражение с ней не может являться левым операндом оператора «=»). Для того чтобы создать переменную или свойство с динамически формируемым именем, нужно использовать функцию set() или оператор «[]»:

eval("per"+i)="Привет"; // Эта строчка вызывает ошибку set("per"+i, "Привет"); // Способ верный, но устаревший this["реr"+i]="Привет"; // Оптимальный способ

Функция eval() была незаменимым средством во Flash 4, так как она позволяла эмулировать массивы. Во Flash 5 появился класс Array, создавший ей мощную конкуренцию. В настоящее время использовать eval() не рекомендуется. Во всех случаях лучше применять массивы — тем более что класс Array еще во Flash MX стал встроенным и это значительно увеличило производительность работы с ним. Подробно о массивах мы поговорим в главе 7.

2.4.13. Текстовые поля

О том, как можно во Flash создавать простой статичный текст, вы наверняка знаете. Однако существуют еще два вида текстовых полей, напрямую связанных с ActionScript: поле динамического текста (Dynamic Text) и поле ввода (Input Text). Их подробному описанию мы в свое время посвятим целую главу. Сейчас же дадим им самую краткую характеристику: она необходима, так как уже в проекте этой главы нам придется работать с динамическим полем.

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

Чтобы создать поле динамического текста, активизируйте инструмент Text (Текст), выберите в специальном списке панели Инспектора Свойств тип — Dynamic Text (Динамический текст) и протаскиванием мышью задайте размер поля. Визуальное отличие у статичного и динамического текстовых полей только одно: маркер расположен не в верхнем, а в нижнем правом углу. Правда, еще бросается в глаза и то, что динамическое поле не исчезает, если в него не был введен текст (что очевидно, так как его заполнение происходит в режиме работы фильма).

На данном этапе нас будут интересовать только две настройки Инспектора Свойств динамического поля: строка Var (от английского Variable — переменная) и поле. Instance Name (Имя экземпляра).

В строке Var вы должны задать имя переменной, значение которой будет выводиться в данном текстовом поле. Это может быть любая переменная, расположенная на любой временной диаграмме. Естественно, что, прописывая ее имя в поле Var, необходимо учитывать особенности адресации во Flash, которые мы обсуждали в главе 1. Так, если вы хотите отображать в текстовом поле, расположенном на временной диаграмме находящегося на _root клипа mov, значение переменной my_text основной временной шкалы, то в поле Var следует ввести:

_root.my_text

Любое переопределение связанной с текстовым полем переменной будет сопровождаться обновлением отображаемой в нем информации.

Для тренировки создайте собственное динамическое поле и выведите в него текст «Привет всем!!!». Получилось? Тогда двигаемся дальше.

Вы можете задать вопрос: зачем, если содержимое текстового поля определяется переменной Var, существует еще и строка Instance Name? Дело в том, что текстовые поля, аналогично клипам, можно трансформировать, используя встроенные свойства. Любое же свойство может быть вызвано только через имя экземпляра, но никак не через связанную с ним переменную. Например, чтобы повернуть динамическое поле с именем din_text на 90°, достаточно набрать:

din_text._rotation+=90;

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

Используя имя текстового поля, можно вывести в него информацию и без связывания его с переменной. Для этого нужно воспользоваться свойством text класса TextField:

text_field_name.text="string"; // При тестировании в поле отображается

// заданный текст

Вторым важным для создания ActionScript-сценариев видом текста является вводимый (Input) текст.

Вводимый текст очень схож с динамическим (поэтому подробно его описывать мы не будем). Единственное принципиальное отличие — значение переменной поля Var или свойства text задается (как правило) не вашим определением в коде, а текстом, который ввел в поле пользователь.

Чтобы набрать в поле ввода какую-то информацию, нужно щелкнуть по нему, При этом появится специальный курсор в виде вертикальной линии (точно такой же, как, например, в Word).

Попробуем на практике разобраться в тонкостях изучаемого понятия. Для этого создадим новое поле типа Input (при помощи инструмента Text (Текст)) и назовем его in_text. В поле Var введем значение inp. Наберем затем следующий код:

var inp=null;

//

Создаем

переменную поля. Пока она будет пуста

in_text.text="Heт Текста"; //

Вывести

текст в поле типа Input можно так же,

in_text.autoSize=true;

//

как и в

динамическое

 

//

Включаем автоматическое изменение ширины поля

in_text.onChanged=function(){ // Данное событие происходит при добавлении // или удалении символа

trace("Свойство text: "+InText.text); //

Выводим значение

//

свойства text

trace("Переменная поля Var: "+inp); //

Выводим значение

// переменной поля Var

};

Войдя в режим тестирования, вы увидите, что созданное поле изменилось в размерах и в нем отобразился текст: «Нет Текста». Попробуйте удалить одну букву. При этом, как покажут выведенные в панель Output сведения, тут же изменятся значения переменной поля и его свойства text. Удалите весь текст и введите свой. Сразу же он станет значением данного поля.

Следя за введенным в поле Input Text текстом, можно создавать действительно интерактивные фильмы. Именно поэтому поле ввода — это одно из ключевых понятий Flash.

Соседние файлы в папке Литература