Итак, вы
получили представление о типах данных. Теперь вам нужно познакомиться со способами
их использования в сценариях ActionScript и в фильмах Flash. Система Flash облегчает
задачу разработчика, предоставляя в его распоряжение редактор сценариев в панелях
Object Actions (Операции объекта) и Frame Actions (Операции кадра); с другой
стороны, переменные могут быть связаны также с редактируемыми текстовыми полями.
Чтобы показать принцип действия обоих механизмов, в текст книги включен пример,
в котором используются оба варианта размещения и инициализации переменных. Загрузите
программу Flash и выполните описанную ниже последовательность шагов.
На рис. 2.1
показано, как в данном случае должна выглядеть панель Text Options (Параметры
текста).
Рис.
2.1. Задание имени для редактируемого текстового поля, обеспечивающего
ввод и вывод значения переменной
Возможность
использовать редактируемое текстовое поле в рабочей области — чрезвычайно полезная
возможность ActionScript; с другой стороны, работа с таким полем позволяет хорошо
разобраться в некоторых механизмах использования переменных. Запустив разрабатываемый
фильм, вы сможете наблюдать за тем, что происходит в ваших сценариях, присваивая
определенные значения переменной, связанной с редактируемым текстовым полем
(в нашем примере
— result). Но мы еще не создали никакого сценария. Для ввода сценария мы воспользуемся
редактором сценариев.
ItemCost = 12:
Tax = ItemCost*0.08;
result = ItemCost+Tax;
Рис.
2.2. Установка значений переменных в панели операций
По завершении
ввода всех переменных и соответствующих им значений протестируйте сценарий,
выполнив команду Control > Test Movie (Управление > Тестировать
фильм) или воспользовавшись комбинацией клавиш Ctrl+Enter (Windows) либо Cmd+Return
(Macintosh). Обратите внимание, что в сценарии есть переменная result, которая
связана с редактируемым текстовым полем. Присваивая этой переменной значение,
вычисленное на основе значений других переменных, мы добиваемся его появления
в рабочей области запущенного фильма.
Тестирование и отладка сценариев ActionScript
Одна из наиболее
распространенных ошибок у начинающих программистов — это опечатка в тексте программы,
когда в имени какой-то переменной пропущен или присутствует лишний символ. В
результате программа делает совсем не то, что нужно. Опечатки на этапе кодирования
действуют на программу убийственно — следует проявлять крайнюю осторожность
и тщательно вычитывать все сценарии. (У опытных программистов также встречаются
подобные ошибки, но в намного более сложных программах; к тому же опытные программисты,
как правило, значительно больше, чем начинающие, проявляют изобретательности
в устранении опечаток.) Вам нужно запомнить, одну чрезвычайно полезную аксиому:
человек умнее компьютера, хотя есть и другая, столь же полезная: компьютер
всегда умнее программиста.
Для начала
попробуйте догадаться, что появится у вас на экране, когда вы запустите приведенный
выше сценарий. Давайте последовательно рассмотрим, что происходит.
Поскольку
для вывода значения переменной result предусмотрено особое редактируемое текстовое
поле, при запуске фильма на экране должна появиться строка 12.96. Выделив кадр,
который был использован для размещения вашего сценария, вы можете повторно проверить
его. Сценарии всех объектов и кадров при выделении последних отображаются в
поле редактора сценариев. Но не следует выделять несколько объектов одновременно,
потому что в этом случае в поле редактора никаких сценариев не окажется. Если
фильм работает некорректно, проще всего сразу обратиться к средствам редактора
сценариев. На рис. 2.3 показано, как выглядит в рабочей зоне законченный фильм,
процесс создания которого описан выше. Пустой прямоугольник в рабочей зоне —
это редактируемое текстовое поле, где выводятся результаты вычислений. Чтобы
протестировать фильм, вы обязательно должны выполнить команду Control >
Test Movie (Управление > Тестировать фильм) или воспользоваться
комбинацией клавиш Ctrl+Enter (Windows) либо Cmd+Return (Macintosh), так как
тестирование непосредственно в рабочей зоне невозможно.
Глобальные
переменные
У любой переменной
есть определенная область видимости (scope). В качестве области видимости
переменных могут выступать как целые фильмы, так и их компоненты. До появления
версии Flash 5 все переменные в сценариях ActionScript были глобальными.
При условии корректной адресации в любом сценарии можно было получить доступ
ко всем переменным, находящимся где угодно в пределах фильма — в любом слое,
в любой сцене. В пакете Flash 5
появилась
возможность работать не только с глобальными переменными. По умолчанию переменные,
введенные с помощью команды Set Variable, рассматриваются как глобальные. Скажем,
все переменные, которые мы использовали в сценарии, описанном в предыдущем разделе,
обладают глобальной областью видимости.
Рис.
2.3. Законченный фильм и сценарий ActionScript в поле редактора сценариев
панели операций
Глобальные
переменные могут совместно использоваться всеми кинолентами при условии правильного
задания пути к этим переменным. У глобальной переменной, «закопанной»
в сценарии, относящемся к кнопке, находящейся на три уровня ниже в иерархии
клипов, такой же статус, как у переменных, определенных в первом кадре главной
киноленты. Изменение значения глобальной переменной может быть произведено любым
объектом; такое изменение в общем случае способно повлиять на все объекты программы.
При необходимости координировать действия нескольких объектов на основании значения
определенной переменной глобальная область видимости как нельзя кстати. Но если
вы используете в разных местах фильма одноименные переменные, очень легко запутаться.
К примеру, в программировании принято обозначать переменную — параметр цикла
литерой i (от английского слова «increment» — приращение). Если
в качестве параметра цикла в двух разных сценариях, находящихся на одной киноленте,
будет применяться одна и та же переменная, возможна ситуация, когда изменение
ее значения в одном из этих сценариев будет влиять на работу другого. Обобщая,
можно сказать, что, хотя глобальные переменные играют важную роль в ActionScript,
в ряде случаев их использование сопряжено с определенными проблемами.
Локальные
переменные
Локальными
называются переменные, объявленные в тексте сценария с помощью ключевого слова
var. Если переменная объявлена в конструкции van внутри фигурных скобок, обозначающих
начало и конец сценария, то значение этой переменной может изменяться лишь внутри
этого сценария. Как только для какой-либо кнопки определяется сценарий, автоматически
создается блок кода, находящийся между фигурными скобками. Любую переменную,
относящуюся к данному сценарию, можно локализовать в его пределах, то есть сделать
локальной переменной кнопки. Взгляните на образец сценария с локальными кнопками:
on(release) {
var retail=50;
var wholesale=30;
var markup=(retail - wholsale);
output=markup;
}
В пакете
Flash 5 одно и то же имя переменной может использоваться в нескольких разных
сценариях — подобную ситуацию мы уже наблюдали, рассматривая ситуацию с клипами
и кадрами. Значение ни одной из перечисленных выше переменных, за исключением
переменной output, не может меняться в других сценариях.
Изменение значений переменных с помощью кнопок
Прежде чем
пользователь увидит значение той или иной переменной на экране, оно может меняться
сотни, тысячи, миллионы раз в результате различных вычислений. Значение других
переменных, например отражающих текущий счет в игре, выводится мгновенно. В
играх принято сообщать пользователю о каждом набранном им очке. В примерах,
которые мы будем в ближайшее время рассматривать, для представления значений
переменных используются редактируемые текстовые поля.
Поскольку
кнопки, с одной стороны, могут обладать собственными сценариями ActionScript,
а с другой стороны, обеспечивают взаимодействие с пользователем, их следует
признать важнейшим источником динамических изменений в значениях переменных.
Применение команды Set Variable в сценариях кнопок во многом отличается от тех
способов установки значений переменных, которые используются в кадрах и редактируемых
текстовых полях. Если в сценарии присутствует команда Set Variable для кнопки,
автоматически генерируется обработчик соответствующего события. (С полным списком
обработчиков событий вы познакомитесь в уроке 6.) На рис. 2.4 показано, как
выглядит панель операций, когда разработчик выбирает команду Set Variable для
какой-то кнопки.
Пример фильма. Кнопки с текстовыми полями
На компакт-диске,
приложенном к настоящей книге, вы найдете файл фильма Button I/O.fla. В этом
фильме есть три кнопки, для которых предусмотрены сценарии,
демонстрирующие технику манипуляции данными, вводимыми через редактируемые текстовые
поля. Фильм включает в себя несколько слоев:
Рис.
2.4. Заготовка сценария ActionScript для кнопки при выборе команды
Set Variable. Обратите внимание на автоматическую вставку обработчика события
on(release)
Чтобы познакомиться
с механизмом взаимодействия кнопок с переменными, выполните следующую последовательность
шагов, позволяющих создать соответствующую страницу и связать с ней сценарий.
На рис. 2.5
представлены рабочая зона, кинолента и все объекты страницы. Как видно на рисунке,
в каждом слое находится лишь один кадр.
Рис.
2.5. Кнопки и текстовые поля в рабочей зоне, предназначенные для
проверки механизма изменения значений переменных с помощью кнопок
В сценариях
всех трех кнопок применяется команда Set Variable. Конструкция on(release) автоматически
добавляется к сценарию кнопки, когда разработчик выбирает команду Set Variable
(Установить значение переменной) в редакторе сценариев. Чтобы создать необходимую
сцену, следует выполнить следующие шаги.
Слой Concatenate
String
Слой Concatenate
String (Конкатенация строк) используется для создания кнопки ChangeVariable
(Изменить переменную), с которой связан следующий сценарий ActionScript, демонстрирующий
изменение значения строковой переменной на основе данных, вводимых пользователем.
Сценарий
кнопки Concatenate, являющейся экземпляром кнопки ChangeVariable
on (release)
{
а = inputA;
b = InputB;
output = a + b;
}
Для конкатенации
строк может использоваться либо оператор add, либо оператор сложения (+). Оператор
сложения является контекстно-зависимым, что позволяет ему выполнять разные операции
для чисел и для строк. В приведенном выше сценарии значение переменной с именем
output (а именно так называется переменная, связанная с текстовым полем, обеспечивающим
вывод информации в нашем фильме) определяется как результат конкатенации двух
строк, являющихся значениями переменных inputA и inputB (эти переменные также
созданы на основе текстовых полей).
Слой Add
Numbers
Слой Add
Numbers (Сложение чисел) используется для создания кнопки Change-Variable (Изменить
переменную), с которой связан следующий сценарий Action-Script, демонстрирующий
прием изменения значения числовой переменной на основе данных, вводимых пользователем.
Сценарий
кнопки Add, являющейся экземпляром кнопки ChangeVariable
on (release)
{
а = Number(inputA):
b = Number(inputB);
output = a +
b; }
Этот сценарий
практически идентичен приведенному выше для кнопки Concatenate (Конкатенировать)
с той лишь разницей, что для преобразования в числа данных, введенных пользователем
в редактируемых текстовых полях, здесь применяется функция Number. Вы можете
ввести число как строковый литерал, чтобы поместить ее в переменную, даже если
в дальнейшем требуется работать с этим числом именно как с числом (в нашем случае
необходима сумма двух чисел, а не результат конкатенации двух строк). Однако
для преобразования строки в число следует использовать особую функцию — Number.
Впоследствии мы будем также пользоваться функциями Parselnt () и Parse-Float(),
позволяющими получить на основе строки или данных редактируемого текстового
поля соответственно целочисленное или вещественное числовые значения. (Более
подробно эти функции мы рассмотрим в уроке 4.)
Слой Test
Boolean
В слое Test
Boolean (Проверка логического условия) мы будем работать с логическими выражениями,
способными принимать лишь два значения: истина и ложь. Если значение переменной
inputA оказывается больше, чем значение inputB, выражение будет считаться истинным;
в противном случае оно будет трактоваться как ложное. Следующий сценарий демонстрирует
принцип работы такого механизма.
Сценарий
кнопки Find String Boolean, являющейся экземпляром кнопки ChangeVariable
on (release)
{
а = InputA;
b = inputs;
output = a> b;
}
Если вы введете
в таком фильме два числа, то можете получить довольно интересный результат.
Так, введя константу 8 в поле inputA и константу 10 в поле inputB, вы получите
на выходе значение true (истина). Но ведь число 8 меньше 10! Возможно, вы ожидали
увидеть слово false (ложь). Но не цадо забывать о том, что оба введенных значения
здесь трактуются как строки, а не как числа, а сравнение строк в данном случае
сводится к сопоставлению символа 1 — первого символа строки 10 — с символом
8. Если для обеих сравниваемых переменных в сценарии использовать функцию преобразования
Number, будет выведено значение false.
Слои Output
Window и Input Windows
Слой Output
Window (Окно вывода) обеспечивает возможность вывода на экран результата работы
того или иного сценария ActionScript.
Редактируемые
текстовые поля мы будем создавать на основе данных табл. 2.3. Все соответствия
между переменными и текстовыми полями устанавливаются с помощью панелей Text
Options (Параметры текста) и Paragraph (Абзац).
Таблица
2.3. Параметры переменных в панели Text Options
Имя переменной |
Флажок Border/Bg |
Способ выравнивания |
||
Output |
Снят |
По правому краю |
||
Input1 | Установлен | По правому краю | ||
Input2 | Установлен | По правому краю |
По завершении
работы над фильмом выполните команду Control > Test Movie (Управление >
Тестировать фильм) или воспользуйтесь комбинацией клавиш Ctrl+Enter (Windows)
либо Cmd+Return (Macintosh), чтобы посмотреть, что произойдет. Попробуйте вводить
различные значения, в том числе отрицательные числа. На рис. 2.6 показан пример
корректной работы фильма.
Рис.
2.6. Кнопки и текстовые поля в рабочей зоне могут применяться для
изменения значений переменных
Попробуйте
использовать множество различных комбинаций. Вы можете, к примеру, ввести значения,
представленные на рисунке, и щелкнуть на кнопке Concatenate (Конкатенировать).
Посмотрите также, что будет происходить при щелчке на кнопке Find String Boolean
(Логический результат поиска строки), вводя различные строки. Необходимо еще
раз подчеркнуть, что наши кнопки не содержат переменных (все используемые здесь
переменные относятся к киноленте), но у кнопок могут быть сценарии, изменяющие
значения переменных. Все переменные в нашем примере являются глобальными, поскольку
ни одна из них не описана с ключевым словом var. Если вы встретитесь с какими-то
трудностями, взгляните на соответствующий фильм, находящийся на компакт-диске.
Откройте файл с расширением FLA и сверьте его компоненты с соответствующими
частями вашего фильма.
В кадрах
могут использоваться данные, источниками которых являются другие кадры и кнопки;
кроме того, кадры способны получать информацию, находящуюся
в редактируемых текстовых полях. В предыдущем примере, где мы применяли кнопки
для изменения значений переменных, нам было достаточно одного кадра. В примере,
который мы будем рассматривать в данном разделе, нам понадобится множество кадров,
но здесь не будет ни одной кнопки. Все сценарии мы разместим в кадрах, а результаты
их выполнения будут отображаться на экране. На рис. 2.7 вы можете увидеть базовый
экран фильма; один из сценариев открыт в поле редактора панели операций.
Рис.
2.7. Все сценарии содержатся в кадрах. Результаты выводятся в текстовых
полях, находящихся в рабочей зоне
Строки с логическими выражениями
Поскольку
логические выражения являются исключительно важной категорией в языке ActionScript,
уже сейчас пора поближе познакомиться со способами работы с ними. В предыдущем
примере мы использовали логический оператор «больше» (>) для
строк. В версии Flash 4 оператор > применялся только к числам. Но
в версии 5 этот оператор работает для всех типов данных. Наряду с ним исключительно
для сравнения строк можно использовать оператор gt: выражения "Смит"
gt "Джоунз" и "Смит" > "Джоунз" синонимичны
и устанавливают, что значение строки «Смит» больше значения «Джоунз».
Поскольку понятие значения строк при их сравнении основано в первую очередь
на позиции первого символа строки в алфавите, строка «Смит» действительно
больше строки «Джоунз». Следовательно, указанные выражения возвращают
значение «истина». В справедливости этого утверждения вы убедитесь,
познакомившись со следующим образцом сценария ActionScript.
Пример фильма. Вывод данных, генерируемых сценариями кадров
На компакт-диске,
приложенном к настоящей книге, вы найдете файл Frame I / O.fla. В фильме, который
находится в этом файле, демонстрируется техника вывода на экран данных, генерируемых
сценариями кадров. Выходная информация отображается в окне вывода, представляющем
собой обычное текстовое поле. Фильм состоит из двух слоев:
Все ключевые
кадры, в которых присутствуют сценарии ActionScript, маркированы комментариями.
Мы используем здесь комментарии, а не метки, потому что в данном случае нет
необходимости адресовать кадры. Фильм последовательно переходит от кадра к кадру,
активизируя различные сценарии в тех местах киноленты, где кадры помечены литерой
а. Создав необходимые слои и разметив в них комментарии, можно приступать к
вводу сценариев.
Итак, все готово к вводу сценариев и других объектов фильма.
Слой Frame
Action
В слое Frame
Action (Операция кадра) необходимо определить ключевые кадры.
Комментарии
и текст сценария, которые следует ввести для ключевых кадров, приведены ниже.
Кадр 3 — Boolean
String
Output = "Smith"
> "Jones"
Кадр 14 — Concatenated
String
Output = "Action"
+ "Script"
Кадр 29 — Numeric
Boolean
Output = -80
> 5
Кадр 42 — Numeric
Expression
Output = 10
+ -7 + 4
Слой Output
Слой Output
(Вывод) содержит только текстовые поля и метки для них; в нем нет ключевых кадров.
Однако имена переменных, связанных с текстовыми полями, используются в качестве
выходных данных сценариев, определенных для ключевых полей.
Адресация переменных в разных кинолентах
Всякий раз,
когда вы создаете новый клип, автоматически создается дополнительная кинолента.
В дальнейшем вы узнаете, как с помощью команды Tell Target (Указать цель) и
других средств организовать обмен данными между кинолентами.
В версии
Flash 4 для обозначения пути к клипам и их переменным применялся синтаксис
с разделителем в виде косой черты. Этот символ разграничивал имена уровней иерархии;
имя переменной необходимо было предварять двоеточием, как в следующем примере:
/mc1/mc2/:variable
Для клипов,
относящихся к другим кинолентам, применялась несколько иная форма указания пути.
К примеру, чтобы адресовать какую-то переменную в сценарии, относящемся к клипу,
вложенному в другой клип, находящийся на главной киноленте, требовалось использовать
конструкцию следующего вида:
../../variable
Такой синтаксис
доступен и в пакете Flash 5, но в нем предусмотрена также более
совершенная система адресации с точками. Такой формат представления
переменных хорошо знаком тем, кто имеет опыт объектно-ориентированного программирования
или работы с языком JavaScript, но и новички должны по достоинству оценить простоту
и естественность нотации с точками. Ее главный принцип состоит в том, что свойства
объектов должны перечисляться через точку, выражающую иерархические связи между
вложенными полями. Скажем, если ваш клип содержит другой клип, в котором определена
нужная вам переменная, ее полное имя будет выглядеть следующим образом: mc1.mc2.variable
Редактор
сценариев ActionScript оказывает программисту значительное содействие в корректном
вводе исходного текста. Тем не менее при его применении требуется определенная
осторожность. Все константы, которые мы использовали в приведенных ранее сценариях,
представляют собой выражения. Вводя числа и строки в поле Value (Значение) панели
операций, удостоверьтесь, что установлен режим ввода выражения, то есть установлен
флажок Expression (Выражение).
Чтобы обеспечить согласованность данных сценария, перед именем переменной вместо двоеточия (:) здесь используется точка. Аналогичные правила существуют для методов, функций и свойств, связанных с клипами. Например, допустимы конструкции следующего вида:
airplane.propeller._rotation=75
Здесь airpl
ane является именем клипа, содержащего вложенный клип propeller. Значение свойства
_rotation клипа propeller устанавливается равным 75.
Для продвижения вверх по иерархической структуре объектов вместо комбинации символов ../ необходимо использовать идентификатор _parent, как показано ниже.
_раrent._parent.variable
В такой нотации
отражается продвижение по иерархии объектов от клипа к его родительскому, а
затем и к «прародительскому» объекту — главной киноленте. Впрочем,
обычно для обращения к объектам главной киноленты применяется идентификатор
_root, обозначающий верхний уровень иерархии. Пример:
_раrent._parent.variable
_root. variable
Приведенные
конструкции обозначают одну и ту же переменную.
Чтобы проиллюстрировать
механизм адресации кинолент, далее мы приведем пример клипа, в сценариях которого
осуществляется обращение к переменным, относящимся к различным уровням иерархии
объектов.
Пример фильма. Отслеживание путей
Одна из наиболее
важных особенностей пакета Flash 5 — это способ взаимодействия объектов, расположенных
на разных кинолентах. В файле Data-Paths.fla, находящемся на прилагаемом к книге
компакт-диске, вы найдете образец фильма, демонстрирующего механизм обмена данными
между клипом и главной
кинолентой. В этом фильме присутствует несколько слоев и клипов, содержащих
сценарии:
Фильм DataPaths
показывает, как различные объекты могут использовать информацию, получаемую
из кинолент. В сценарии, определенном для некоторого кадра клипа, устанавливается
значение строковой переменной. Кнопка, находящаяся на главной киноленте, включает
в себя сценарий, пересылающий данные клипа в редактируемое текстовое поле, относящееся
к главной киноленте; в результате указанные данные отображаются на экране. Кнопка,
определенная в клипе, позволяет задать значение текстового поля главной киноленты.
При щелчке на этой кнопке соответствующее значение будет отражено в текстовом
поле, принадлежащем главной киноленте. Наконец, кнопка, созданная на главной
киноленте, позволяет генерировать значение переменной текстового поля главной
киноленты. Для адресации каждой из кнопок применяется особый путь, однако все
кнопки решают одну и ту же задачу — отображают строковое значение в текстовом
поле.
Слой Mainline
Слой Mainline
(Главная кинолента) применяется для задания значения переменной, определенной
в одном из кадров этого слоя. Кроме того, этот слой является базовым для клипа.
Чтобы получить описанную ситуацию, выполните следующие действия.
Для кнопки
Mbutt относящейся к клипу indie
on (release)
{
_раrent.output
= "...from afar/..";
}
Комментарий
к кадру 1 клипа indie, находящегося на главной киноленте
iData = "Label
your MCM";
Комментарий
к кадру 1 главной киноленты
Data = "Main
TimeLlne Frame";
Рис.
2.8. Клип в режиме редактирования символов
На
рис. 2.9 имя экземпляра, присутствующее в поле Name (Имя), совпадаете вве-денным
нами ранее именем символа, однако они вовсе не обязаны совпадать. Более того,
если в фильме используется несколько экземпляров клипа, имена символа и экземпляра
не могут совпадать.
Рис.
2.9. Всегда проверяйте, не забыли ли вы ввести имя экземпляра клипа,
адресуемого в сценариях
Слой Buttons
Слой Buttons
(Кнопки) в полном соответствии со своим именем предназначен для размещения кнопок
на главной киноленте. Прежде всего средствами панели Info (Информация) нужно
создать два символа, задав для них ширину и высоту, равную 47 точкам, как было
описано в предыдущем разделе. На рис. 2.10 вы видите эти кнопки и их метки.
Назовите один из символов Main (Главная), а другой — Remote (Удаленная).
Сценарий
для кнопки Main
on (release)
{
Output = Data;
}
С помощью
инструмента Text (Текст) справа от кнопки разместите надпись Main
TimeLine (Главная кинолента).
Сценарий
для кнопки Remote
on (release)
{
output = indle.iData;
}
С помощью
инструмента Text (Текст) справа от кнопки разместите надпись Remote
TimeLine (Удаленная кинолента).
Рис.
2.10. Создайте в слое Buttons еще две кнопки
Слой Output
В слое Output
(Вывод) находится редактируемое текстовое поле, с которым связана переменная
Output, как показано в табл. 2.4.
Таблица
2.4. Имя переменной и значения соответствующих параметров
Имя переменной |
Флажок Border/Bg |
Способ выравнивания |
||
Output |
Снят |
По правому краю |
||
Над редактируемым
текстовым полем разместите статическую надпись Output (Вывод). Фильм готов.
Можно приступать к тестированию.
Запустив
вновь созданный фильм, вы увидите, как в окне вывода главной киноленты появляются
различные сообщения. Кнопка, находящаяся в клипе, выводит сообщение Form afar...
(Издалека), напоминая вам о том, что соответствующая переменная определена в
киноленте клипа. Кнопка с меткой Main TimeLine (Главная кинолента) обрабатывает
кадр главной киноленты, сообщающий вам о том, что данные поступили из сценария,
включенного именно в такой кадр. Наконец, кнопка Remote TimeLine (Удаленная
кинолента) выводит сообщение Labelyour MC! (Снабжайте свои клипы метками), исходящее
из кадра, относящегося к киноленте клипа, а не к главной киноленте.
В уроке 4
вы научитесь применять условные инструкции в качестве механизма принятия решений
в сценариях ActionScript. Однако использование логических констант позволяет,
в частности, произвести сравнение и в зависимости от его результатов осуществить
ту или иную последовательность действий, не прибегая к условным инструкциям.
(Разумеется, логические выражения широко применяются и в условных инструкциях.)
Нам понадобится написать простейший сценарий, состоящий из трех строк, причем
все вычисления здесь сосредоточены в одной-единственной строке. Этот сценарий
прост не только по форме, но и по функции. С его помощью можно округлять дробные
числа. Округление производится в большую сторону, если дробная часть числа больше
или равна 0,5, и в меньшую сторону в противном случае. Польза подобных сценариев
объясняется, в частности, тем обстоятельством, что функция into производит округление
лишь в меньшую сторону, превращая число 2,99 в целое число 2. Впрочем, в уроке
8 вы познакомитесь с объектом Math, позволяющим справиться с этой задачей стандартными
средствами — методом Math.round. На рис. 2.11 представлен вид рабочей зоны по
завершении разработки фильма.
Рис.
2.11. Текстовые поля для ввода и вывода информации через механизм
кадров
Пример фильма. Округление вещественных чисел
В фильме
RoundUp.fla, который вы найдете на компакт-диске, демонстрируется применение
логических выражений для проверки соответствия реальной ситуации определенному
условию. Фактически в этом фильме используется усовершенствованная функция into,
позволяющая производить округление как в меньшую, так и в большую сторону. В
фильме присутствуют два слоя:
Подготовить
такой фильм довольно просто. Сначала на основе информации, содержащейся в табл.
2.5 и 2.6, следует создать слои Input (Ввод) и Output (Вывод). Выделите мышью
один и тот же кадр в обоих слоях, а затем выполните команду Insert > Frame
(Вставка > Кадр) либо нажмите клавишу F5. Для этого фильма нам понадобятся
лишь два кадра.
Таблица
2.5. Имя переменной и значения соответствующих параметров для слоя
Output
Имя переменной |
Флажок Border/Bg |
Способ выравнивания |
||
Output |
Снят |
Полевому краю |
||
Таблица
2.6. Имя переменной и значения соответствующих параметров для слоя
Input
Имя переменной |
Флажок Border/Bg |
Способ выравнивания |
||
Input |
Установлен |
Полевому краю |
||
Введите в
качестве комментария к кадру 1 слово Calculate. При вводе текста сценария обращайте
особое внимание на парность скобок. Каждой открывающей скобке должна соответствовать
закрывающая.
Сценарий
для кадра 1 с комментарием Calculate
fraction = Input:
whole = int(fraction);
output = whole
+ ((fraction-whole)>=.5);
По завершении
ввода сценария протестируйте фильм, воспользовавшись комбинацией клавиш Ctrl+Enter
(Windows) или Cmd+Return (Macintosh). Фильм выполняется в цикле; он работает
чрезвычайно быстро, поскольку здесь лишь два кадра, а это значит, что сценарий
практически всегда либо находится в состоянии ожидания, либо обновляет содержимое
экрана. Не успеете вы ввести какое-либо число, как сценарий выдаст результат
его округления. Алгоритм работы сценария выглядит так.
Проект. Работа с входной информацией для базы данных
Система Flash
представляет собой прежде всего мощное средство создания фильмов, которые способны
выполняться в Интернете и должны производить впечатление на людей, «прогуливающихся»
по Сети. Однако фильмы Flash могут также сохранять информацию, предоставленную
пользователем, в базе данных, с которой работает соответствующий Web-сайт. На
прилагаемом к книге компакт-диске есть файл DataEntry.fla, содержащий образец
фильма, в котором через систему кнопок и редактируемых текстовых полей осуществляется
ввод определенных сведений, подлежащих дальнейшему сохранению в базе данных;
записи базы по одной выдаются на экран; для очистки экрана применяется кнопка
Reset (Сброс). В рассматриваемом фильме присутствуют два слоя:
На рис. 2.12
представлена основная рабочая зона, в которой наличествует шесть «форм»
— редактируемых текстовых полей, две кнопки и поле вывода информации, поставляемой
базой данных. Кнопка Submit (Отправить) обеспечивает сбор всех введенных данных
и переправляет их в отдельную анкетную форму, одновременно слегка перестраивая
пересылаемую информацию. Для выполнения поставленной задачи удобной оказывается
функция chr(N). (Информацию обо всех функциях, необходимых для успешной работы
со сценариями ActionScript, вы найдете в уроке 7.) При необходимости изменить
средствами ActionScript форматирование текста вы можете столкнуться с проблемой
ввода различных специальных символов. Так, если вы набираете текст и захотели
разбить одну строку на две, вам достаточно нажать клавишу Enter или Return.
Сценарий ActionScript не может выполнять подобные действия без участия пользователя,
поэтому возникает необходимость в применении функции chr(N), где N — число.
Код символа перехода на новую строку равен 13, и этот код можно вставить в любое
место строки, если надо произвести ее разделение. (В некоторых случаях можно
также использовать инструкцию newline.) На рис. 2.13 показан переход на новую
строку после строки с фамилией и почтовым кодом, — в сценарии, приписанном к
кнопке Submit (Отправить), вызов функции chr(13) конкатенируется со строками,
полученными из соответствующих текстовых полей. Кнопка Reset (Сброс) предназначена
для установки во всех полях нулевых значений.
Рис.
2.12. Рабочая зона состоящего из двух слоев фильма, который предназначен
для ввода данных
Рис.
2.13. Порядок представления выходных данных изменен для большей наглядности
В данном
фильме вся обработка сценариев осуществляется щелчками на кнопках Submit (Отправить)
и Reset (Сброс). Кнопка Submit позволяет получить данные, введенные пользователем,
и вывести их в слегка модифицированном виде. Кнопка Reset осуществляет сброс
всех установленных пользователем значений, обнуляя соответствующие поля. Чтобы
создать такой фильм, необходимо выполнить следующую последовательность действий.
Кнопка
Submit
Значения
переменных, связанных с текстовыми полями, переносятся в другие переменные.
Фамилия и имя (в обратном порядке) помещаются в переменную name. Название города,
штата и почтовый код соединяются в значении переменной address. Для соединения
нескольких строковых значений в одно применяется оператор конкатенации (+).
Для перехода на новую строку используются либо вызов функции chr(13), либо инструкция
newline. Наконец, для окна вывода вновь применяется конкатенация — соединяются
значения имени, почтового адреса и адреса электронной почты.
on (release)
{
name = fname + " " + Iname + chr(13);
address= city
+ " " + State + " " + zip + newline;
database=name
+ address + email;
}
Кнопка
Reset
Чтобы ввести
нулевое значение, достаточно оставить поле незаполненным. Следующий сценарий
обеспечивает сброс всех значений, введенных в редактируемых текстовых полях.
on (release)
{
lname = "";
fname = "";
city = "":
state = "";
zip = "";
email = "":
database = "";
}
Работа с
текстовыми полями в слое Forms (Формы) весьма проста. Для каждого поля определена
особая переменная, обеспечивающая доступ к данным этого поля. Все текстовые
поля позволяют вводить данные; поля выделяются на экране рамкой и цветом фона.
Для всех полей, перечисленных в табл. 2.7, установлен темно-коричневый цвет
шрифта, чтобы они хорошо выделялись на экране. Возможно, вы предпочтете какой-то
другой цвет. Для установки цветов в соответствующих панелях Flash 5 предусмотрены
кнопки выбора цвета. Для текстовых полей, в которых пользователь вводит информацию,
в панели Text Options (Параметры текста) всегда следует выбирать вариант Input
Text (Набираемый текст). Размещая рядом с текстовыми полями метки, выбирайте
вариант Static Text (Статический текст).
Таблица
2.7. Текстовые поля базы данных
Имя переменной |
Флажок Border/Bg |
Способ выравнивания |
Lname |
Установлен |
По левому краю |
Fname | Установлен | Полевому краю |
City | Установлен | Полевому краю |
В этом уроке
мы научились...