Создание текстовых эффектов в Flash
30 Август 2008 Автор: adminСоздание собственных текстовых эффектов в Flash
Первым эффектом, который мы рассмотрим, является стандартный эффект пишущей машинки, заключающийся в том, что текст в текстовом поле отображается так, будто он напечатан вручную. Мы рассмотрим два различных способа создания эффекта пишущей машинки. Прежде всего, мы изучим основные принципы работы данного эффекта.
Нам нужно, чтобы с каждым кадром в текстовом поле появлялась все большая часть строки текста. Этого можно добиться, введя переменную-счетчик и увеличивая ее значение с каждым кадром, и затем располагать текст в текстовом поле, используя этот счетчик для задания длины текста в каждом новом кадре. Во Flash 5 мы могли бы отображать текст в текстовом поле, присваивая ему переменную. Каждый раз при обновлении этой переменной текстовое поле также обновлялось бы соответствующим образом. Во Flash MX текстовое поле является объектом с параметром text. Чтобы текст отображался в текстовом поле, нам нужно присвоить фрагмент текста параметру text текстового поля.
Имейте в виду, что все еще можно добавить переменную текстовому полю (Var). Мы не будем использовать этот метод, так как, скорее всего, эта возможность была сохранена лишь для обеспечения корректной работы с файлами, созданными во Flash.

Создание эффекта пишущей машинки
Откройте новый файл Flash и расположите текстовое поле на позиции (217,113). Теперь перетащите кнопку текстового поля, чтобы изменить размер поля примерно на 360 пикселей в ширину и на 150 в высоту.
Всегда лучше изменять размер динамических текстовых полей, перетаскивая кнопку текстового поля. Если изменить размер текстового поля, указав значения W и H в Property inspector, текст будет искаженным.
Выберите шрифт Verdana, размер шрифта 9 и черный цвет. Установите параметр текстового поля Dynamic Text, затем в ниспадающем списке Line Type выберите Multiline. Убедитесь в том, что опция Selectable не отмечена. (Selectable является опцией, определяющей, может ли пользователь делать изменения в тексте при просмотре фильма.) Назовите инстанс текстового поля tf_txt. Окно Property inspector должно выглядеть примерно следующим образом:

увеличить изображение
Теперь создайте новый слой scripts и введите следующий ActionScript в кадре 1. Прежде всего мы присвоим текстовому полю некоторый текст:
tf_txt.text = "When a vibrating source of waves is approaching an observer, the frequency observed is higher than the frequency emitted by the source. When the source is receding, the observed frequency is lower than that emitted. This is known as the Doppler effect, or Doppler's principle.";
Запустив фильм, вы увидите, что Flash расположил текст внутри нашего текстового поля. На данном этапе имеет смысл выбрать команду меню Debug > List Variables и выяснить, в каком состоянии находится текстовое поле. В окне Output вы увидите примерно следующее:

Это дает нам исчерпывающее представление о том, что происходит с текстовым полем. Каждое динамическое текстовое поле или текстовое поле ввода, размещенное на рабочем месте, имеет параметры и свойства, которые могут изменяться во время выполнения.
До сих пор мы выводили весь текст одновременно, а теперь нам нужно, чтобы он отображался посимвольно с каждым кадром. Чтобы добиться этого эффекта, возьмем наш фрагмент текста и присвоим его переменной вместо параметра текстового поля text. Просто замените tf_txt.text на text_str:
text_str="When a vibrating source...";Теперь мы создадим функцию enterFrame для добавления символов в текстовое поле один за другим с использованием метода substr объекта строки. Этот метод передает два аргумента - один из них позволяет указывать стартовую позицию, а другой указывает число символов. Затем метод получает фрагмент строки. Итак, имея в виду текстовую строку, рассмотренную выше, обратимся к следующему ActionScript:
Text_str.substr (0, 6);
Это выражение будет получать фрагмент “When a”, т.е. первые шесть символов строки. При реализации эффекта пишущей машинки первый передаваемый аргумент будет всегда равен нулю, так как текст должен отображаться с начала строки, в то время как второй аргумент (длина полученной строки) будет увеличиваться с каждым разом, отображая все больший фрагмент строки.
Введите следующий ActionScript под имеющимся в слое scripts кодом:
this.onEnterFrame = function() { // assign the portion of the string from 0 to count to the // textField. tf_txt.text = text_str.substr(0, count); count += 2; };
Сохраните ваш фильм в файле typeWriter001.fla и запустите его. Вы можете ускорить появление текста, увеличив число, на которое возрастает значение count в каждом кадре. Одним из неприятных побочных эффектов является некорректный перенос. Мы можем обойти этот недостаток, вставив в текстовую строку символы новой строки (\n):

text_str="When a vibrating source of waves is approaching
an observer, the frequency observed is higher
than nthe frequency emitted by the source.
When the source is receding, the observed frequency is lower than
that emitted. This is known as the Doppler effect,
or Doppler's principle."Сохраните ваш файл под именем typeWriter001b.fla. Запустив его, вы увидите, что текст появляется в новой строке, начиная с того места, в которое вы добавили символ \n.
Несмотря на то, что этот эффект работает как надо, он далеко не идеален, так как он никогда не перестает выполняться: счетчик будет продолжать свое действие до бесконечности. Кроме этого, мы настроили функцию onEnterFrame в корневом уровне на управление эффектом. Гораздо лучше доверить тексту самостоятельное управление самим собой. Но об этом уже в следующий раз








