Опубликован: 04.11.2006 | Уровень: специалист | Доступ: платный
Урок 1:

Знакомство с ActionScript

Урок 1: 123456 || Урок 2 >

Пишем первый скрипт

Теперь, когда у нас есть вся нужная информация, а также эскизная раскадровка нашего проекта, давайте приступим к его сборке.

  1. Откройте Блокнот (Notepad) Windows или Apple Simple Text, создав новый текстовый файл, и введите следующий текст: &electricBill=60.

В первой части нашего упражнения мы создадим источник данных, загружаемых в наш фильм при его воспроизведении. Для нашего проекта этот источник данных содержит значение, представляющее собой сумму счета за электричество. Flash, загрузив этот текстовый файл, интерпретирует строку текста и создаст в фильме ячейку данных (переменную) с именем electricBill и присвоит ей значение 60. Значение этой переменной будет использоваться в нашем проекте для нескольких целей.

Примечание Загрузка данных во Flash из внешних источников подробно обсуждается в Уроке 11 – Ввод и вывод данных во Flash. О переменных подробно рассказано в Уроке 7 – Использование динамических данных.

  1. Дайте текстовому файлу имя Electric_Bill.txt и сохраните его в папке, содержащей файлы для этого урока, а затем откройте electricbill1.fla из папки Lesson01/Assets.

Цель данного курса состоит в том, чтобы обучать ActionScript, а не работе во Flash, поэтому вы обнаружите, что практически все элементы нашего проекта, за исключением скриптов, уже на месте.

Основной монтажный стол нашего проекта содержит пять слоев, в каждом из которых по 10 кадров. Слои названы так, чтобы их содержимое было очевидно с первого взгляда. Слой Actions (действия) в данный момент пуст.

  1. Откройте инспектор Параметры (Property) и выделите текстовое поле в левом верхнем углу сцены, под надписью "Amount you owe is:". В инспекторе Параметры присвойте текстовому полю имя копии (экземпляра) owed.

Поскольку данное текстовое поле будет отображать сумму счета за электричество (долга), мы назвали его owed.


Примечание Во Flash 5 текстовым полям назначались имена переменных, что было наиболее предпочтительным способом их идентификации при использовании в ActionScript. Во Flash MX же текстовые поля рассматриваются как экземпляры нового объекта Text Field. Поэтому теперь для их идентификации служат имена экземпляров. Хотя вы по-прежнему можете назначить для текстового поля имя переменной, при таком способе для вас будут недоступны некоторые новые функциональные возможности, присущие объекту Text Field. Таким образом, для идентификации текстовых полей лучше использовать имена экземпляров.

  1. Не закрывая инспектор Параметры, выделите текстовое поле под надписью "Amount you would like to pay is:". Присвойте этому текстовому полю имя paid.

Повнимательнее взглянув на инспектор Параметры, вы увидите, что это текстовое поле относится к типу Input Text, то есть поле для ввода. Оно будет использоваться для получения информации от пользователя, а именно – суммы денег, которую он желает внести в счет оплаты. В это текстовое поле мы ввели ноль (0), эта сумма будет отображаться в нем в начале фильма.

  1. По-прежнему не закрывая инспектор Параметры, выделите текстовое поле в нижней части сцены, под кнопкой выключателем. Присвойте этому текстовому полю имя экземпляра message.

Данное текстовое поле будет отображать сообщения для пользователя, в зависимости от того, сколько он решит заплатить.

  1. Выделите экземпляр фильма-символа lightbulb и присвойте ему имя light.

Поскольку наш скрипт будет воздействовать на этот экземпляр фильма-символа, мы должны дать экземпляру имя, чтобы можно было указать на него в скрипте. На монтажном столе данного фильма-символа имеется три кадра – с метками Off, On и Hot ; они будут определять вид фильма при различных условиях. Изначально на экране появится кадр Off.

В нашем скрипте (который мы вскоре напишем) мы предусмотрим, чтобы фильм-символ оставался на кадре с этой меткой, если пользователь заплатит меньше, чем он должен (не заплатил – сиди без света). Если пользователь заплатит ровно столько, сколько должен, мы переместим воспроизведение монтажного стола этого клипа к кадру с меткой On – чтобы свет включился. Если же пользователь заплатит больше, чем нужно, мы перейдем к кадру с меткой Hot, и лампочка прямо таки раскалится.

Теперь, когда все элементы в нашей сцене поименованы, можно приступить к написанию скрипта, и начнем мы с того, что дадим указание нашему фильму загрузить данные из внешнего текстового файла.

  1. Открыв панель Действия (Actions) и установив ее в Экспертный режим(Expert Mode), выделите кадр 1 слоя Actions и введите следующий скрипт:
loadVariablesNum ("Electric_Bill.txt", 0);

Примечание Мы советуем оставить панель Действия в экспертном режиме, поскольку так будет проще всего вводить большинство скриптов, описанных в данном курсе.

Данная строка скрипта делает единственную вещь: загружает переменные из файла Electric_Bill.txt (который мы создали ранее) в Уровень 0, то есть в фильм, с которым мы сейчас работаем. Файл Electric_Bill.txt содержит единственную переменную с именем electricBill, имеющую значение 60. Таким образом, после выполнения этой строки программного кода в нашем фильме появится переменная electricBill со значением 60. Весь процесс заключается просто в переносе переменных из текстового файла в наш фильм.

loadVariablesNum() – это действие. Мы заставили его работать особым способом, указав в скобках уникальные значения параметров. Данное действие имеет два параметра, разделяемых запятой. Первый указывает на внешний источник, содержащий данные; второй – на монтажный стол, в который должны быть загружены данные. Впоследствии вы увидите, что таким же способом осуществляется указание параметров и для многих других элементов ActionScript.

Мы поместили этот скрипт в кадр 1 нашего фильма, стало быть, он будет выполнен, как только начнется воспроизведение фильма – это важно, поскольку фильм должен заранее получить значение переменной electricBill для скрипта, который будет организовывать работу кнопки-выключателя Light Switch.

  1. Добавьте ключевой кадр в кадр 10 слоя Actions. Затем в панели Действия (Actions) введите для этого ключевого кадра следующий скрипт:
owed.text = electricBill;
stop ();

Итак, кадр 1 содержит действие, загружающее переменные из файла Electric_Bill.txt. Пока происходит загрузка, воспроизведение монтажного стола фильма продолжается, а когда он достигает кадра 10, выполняются действия, добавленные нами только что.

Первое действие устанавливает значение, отображаемое в экземпляре текстового поля owed, равным значению electricBill. Как вы помните, имя owed мы дали экземпляру текстового поля, расположенному в левом верхнем углу нашего фильма, а electricBill – переменная со значением 60, загружаемая из нашего текстового файла. Таким образом, данная строка скрипта приведет к тому, что в текстовом поле owed будет отображено число 60.


Как мы уже упоминали, во Flash MX текстовые поля представляют собой объекты. Являясь таковыми, они имеют многочисленные свойства. Одно из новых свойств текстового поля – это свойство text. Данное свойство используется для указания текста, который должен быть отображен в экземпляре. Приведенный скрипт демонстрирует использование этого свойства на примере отображения текста в экземпляре текстового поля с именем owed. Обратите внимание на точку (.), разделяющую имя объекта и имя его свойства. В ActionScript таким образом вы указываете, что хотите работать с чем-либо, присущим объекту – в данном случае с одним из его свойств.

Кроме того, первая строка демонстрирует использование оператора между двумя элементами – свойством объекта и переменной (ее значением). Здесь это оператор присваивания, обозначаемый знаком равенства (=), с его помощью скрипт присваивает значение переменной electricBill свойству text экземпляра текстового поля owed.

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

Совет Как вы можете заметить, между кадром, содержащим действие загрузки переменных из текстового файла, и кадром 10, в котором используется загруженная переменная electricBill, имеется промежуток из нескольких кадров. Это нужно для того, чтобы текстовый файл успел действительно загрузиться. Если бы мы попытались воспользоваться переменной electricBill до того, как завершится загрузка текстового файла, то столкнулись бы с проблемами. Фактически наш фильм вел бы себя так, словно текстовый файл и вовсе не загружался. "Прокладка" из кадров, созданная нами – один из способов предупреждения такой проблемы. О других способах мы поговорим в следующих уроках.

Урок 1: 123456 || Урок 2 >
Салтанат Бектегенова
Салтанат Бектегенова

Дострочное пересдача экзамена

 

Евгений Стародубцев
Евгений Стародубцев

Вот задание:

7. Открыв панель Действия (Actions) и установив ее в Экспертный режим(Expert Mode), выделите кадр 1 слоя Actions и введите следующий скрипт:

Евгения Дегтяренко
Евгения Дегтяренко
Украина, Запорожье
Анна Елисеева
Анна Елисеева
Россия, Великий Новгород, Ногородский государственный университет имени Ярослава Мудрого, 2003