к оглавлению Flash   Алгоритмизация   4GL - визуальные среды мультимедийные технологии  

Мультимедийный скриптовый язык ActionScript

Создание и размещение переменных

Итак, вы получили представление о типах данных. Теперь вам нужно познакомиться со способами их использования в сценариях ActionScript и в фильмах Flash. Система Flash облегчает задачу разработчика, предоставляя в его распоряжение редактор сценариев в панелях Object Actions (Операции объекта) и Frame Actions (Операции кадра); с другой стороны, переменные могут быть связаны также с редактируемыми текстовыми полями. Чтобы показать принцип действия обоих механизмов, в текст книги включен пример, в котором используются оба варианта размещения и инициализации переменных. Загрузите программу Flash и выполните описанную ниже последовательность шагов.

  1. Создайте новую страницу.
  2. Дважды щелкните на имени слоя Layer 1 (Слой 1) и переименуйте его в Sales Tax (Налог с продажи).
  3. Выполните команду Window > Panels > Text Options (Окно > Панели > Параметры текста), чтобы вывести на экран панель Text Options (Параметры текста). Создайте редактируемое текстовое поле с помощью инструмента Text (Текст), выбрав его в наборе инструментов. Выделите вновь созданное редактируемое текстовое поле и выберите в верхнем раскрывающемся списке панели Text Options пункт Dynamic Text (Динамический текст).
  4. Установите флажки HTML и Border/Bg (Граница/Фон) в панели Text Options (Параметры текста).
  5. Введите имя.переменной result в поле Variable (Переменная). Примите наши поздравления. Вы создали переменную, связанную с редактируемым текстовым полем.

На рис. 2.1 показано, как в данном случае должна выглядеть панель Text Options (Параметры текста).

Рис. 2.1. Задание имени для редактируемого текстового поля, обеспечивающего ввод и вывод значения переменной

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

  1. Щелкните на первом (ключевом) кадре.
  2. Выберите команду Window > Actions (Окно > Операции) или нажмите комбинацию клавиш Ctrl+Alt+A (Windows) либо Cmd+Option+A (Macintosh), чтобы открыть панель Frame Actions (Операции кадра) с полем редактора сценариев ActionScript (справа).
  3. В левой части панели вы увидите ряд папок, в том числе Basic Actions (Основные операции) и Actions (Операции). Щелкните на папке Actions, чтобы раскрыть ее.
  4. Дважды щелкните на пункте Set Variable (Присвоить значение переменной) в списке Actions.
  5. В нижней части панели операций появятся редактируемые поля Variable (Переменная) и Value (Значение), как показано на рис. 2.2. Введите приведенный ниже сценарий, в котором присутствуют другие переменные и устанавливаются их значения. Все значения представлены в виде выражений — не забудьте установить для них флажок Expression (Выражение) справа от поля Value.

ItemCost = 12:

Tax = ItemCost*0.08;

result = ItemCost+Tax;

Рис. 2.2. Установка значений переменных в панели операций

По завершении ввода всех переменных и соответствующих им значений протестируйте сценарий, выполнив команду Control > Test Movie (Управление > Тестировать фильм) или воспользовавшись комбинацией клавиш Ctrl+Enter (Windows) либо Cmd+Return (Macintosh). Обратите внимание, что в сценарии есть переменная result, которая связана с редактируемым текстовым полем. Присваивая этой переменной значение, вычисленное на основе значений других переменных, мы добиваемся его появления в рабочей области запущенного фильма.

Тестирование и отладка сценариев ActionScript

Одна из наиболее распространенных ошибок у начинающих программистов — это опечатка в тексте программы, когда в имени какой-то переменной пропущен или присутствует лишний символ. В результате программа делает совсем не то, что нужно. Опечатки на этапе кодирования действуют на программу убийственно — следует проявлять крайнюю осторожность и тщательно вычитывать все сценарии. (У опытных программистов также встречаются подобные ошибки, но в намного более сложных программах; к тому же опытные программисты, как правило, значительно больше, чем начинающие, проявляют изобретательности в устранении опечаток.) Вам нужно запомнить, одну чрезвычайно полезную аксиому: человек умнее компьютера, хотя есть и другая, столь же полезная: компьютер всегда умнее программиста.

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

  1. В первой строке сценария константа 12 присваивается переменной ItemCost. В результате получаем 12.
  2. Во второй строке значение переменной ItemCost умножается на 0,08. Получаем 0,96.
  3. В третьей строке происходит сложение результата выполнения первой строки с результатом выполнения второй строки. Получается 12.96.

Поскольку для вывода значения переменной 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. В этом фильме есть три кнопки, для которых предусмотрены сценарии, демонстрирующие технику манипуляции данными, вводимыми через редактируемые текстовые поля. Фильм включает в себя несколько слоев:

  • Concatenate Strings (Конкатенация строк);
  • Add Numbers (Сложение чисел);
  • Test Boolean (Проверка логического условия);
  • Output Window (Окно вывода);
  • Input Windows (Окна ввода).

Рис. 2.4. Заготовка сценария ActionScript для кнопки при выборе команды Set Variable. Обратите внимание на автоматическую вставку обработчика события on(release)

Чтобы познакомиться с механизмом взаимодействия кнопок с переменными, выполните следующую последовательность шагов, позволяющих создать соответствующую страницу и связать с ней сценарий.

  1. Создайте символ кнопки и назовите его ChangeVariable (можно просто взять готовую кнопку в библиотеке).
  2. Создайте три экземпляра кнопки — по одному в слоях Concatenate Strings (Конкатенация строк), Add Numbers (Сложение чисел) и Test Boolean (Проверка логического условия).
  3. Добавьте слой Output Window (Окно вывода), который будет содержать текстовые поля.
  4. Добавьте слой Input Windows (Окна ввода), где пользователи смогут изменять значения переменных и наблюдать за результатами своих действий. Обратите внимание на то, что в фильме присутствуют два окна ввода.

На рис. 2.5 представлены рабочая зона, кинолента и все объекты страницы. Как видно на рисунке, в каждом слое находится лишь один кадр.

Рис. 2.5. Кнопки и текстовые поля в рабочей зоне, предназначенные для проверки механизма изменения значений переменных с помощью кнопок

В сценариях всех трех кнопок применяется команда Set Variable. Конструкция on(release) автоматически добавляется к сценарию кнопки, когда разработчик выбирает команду Set Variable (Установить значение переменной) в редакторе сценариев. Чтобы создать необходимую сцену, следует выполнить следующие шаги.

  1. Создайте символ, нарисовав кнопку в рабочей зоне, затем выполните команду Insert > Convert to Symbol (Вставка > Преобразовать в символ) или нажмите клавишу F8. Можно также создать кнопку средствами редактора символов, вызываемого командой Insert > New Symbol (Вставка > Новый символ) или комбинацией клавиш Ctrl+F8 (Windows) либо Cmd+F8 (Macintosh).
  2. В диалоговом окне Symbol Properties (Свойства символа) установите переключатель Button (Кнопка). Введите имя символа в поле Name (Имя). В нашем примере употребляется имя ChangeVariable.
  3. Выполните команду Window > Library (Окно > Библиотека) или воспользуйтесь комбинацией клавиш Ctrl+L (Windows) либо Cmd+L (Macintosh), чтобы открыть окно библиотеки. Перетащите мышью экземпляры кнопки в рабочую зону — всего экземпляров должно оказаться три — по числу слоев (в нашем случае это Concatenate Strings (Конкатенация строк), Add Numbers (Сложение чисел) и Test Boolean (Проверка логического условия)).
  4. Выделите одну из кнопок и введите сценарий ActionScript в поле редактора сценариев. Если на экране нет панели операций, откройте ее командой Window > Actions (Окно > Операции) или нажатием комбинации клавиш Ctrl+Alt+A (Windows) либо Cmd+Option+A (Macintosh). При выделении кнопки сценарий автоматически связывается с ней. Повторите этот шаг для двух других кнопок.

Слой 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 Установлен По правому краю

 

  1. Откройте панель Text Options командой Window > Panels > Text Options (Окно > Панели > Параметры текста) либо воспользовавшись комбинацией клавиш Ctrl+T (Windows) или Cmd+T (Macintosh). Создайте редактируемые текстовые поля инструментом Text (Текст). Поочередно выделяя каждое поле, в панели Text Options выберите пункт Input Text (Набираемый текст) в верхнем раскрывающемся списке и введите имя переменной в поле Variable (Переменная).
  2. Задайте способ выравнивания текста в панели Paragraph (Абзац), которая вместе с панелью Text Options (Параметры текста) является частью одной комбинированной панели.

По завершении работы над фильмом выполните команду 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. В фильме, который находится в этом файле, демонстрируется техника вывода на экран данных, генерируемых сценариями кадров. Выходная информация отображается в окне вывода, представляющем собой обычное текстовое поле. Фильм состоит из двух слоев:

  • Frame Action (Операция кадра);
  • Output (Вывод).

Все ключевые кадры, в которых присутствуют сценарии ActionScript, маркированы комментариями. Мы используем здесь комментарии, а не метки, потому что в данном случае нет необходимости адресовать кадры. Фильм последовательно переходит от кадра к кадру, активизируя различные сценарии в тех местах киноленты, где кадры помечены литерой а. Создав необходимые слои и разметив в них комментарии, можно приступать к вводу сценариев.

  1. Добавьте новый слой к уже существующему в фильме. Назовите верхний слой Frame Action (Операция кадра), а нижний — Output (Вывод).
  2. В слое Frame Action щелкните на кадре 60. Не отпуская кнопки мыши, перетащите указатель вниз, чтобы кадр 60 оказался выделенным в обоих слоях.
  3. Вставьте кадр с помощью команды меню Insert > Frame (Вставка > Кадр) или нажатием клавиши F5. Теперь в обоих слоях фильма будет по 60 кадров.

Итак, все готово к вводу сценариев и других объектов фильма.

Слой Frame Action

В слое Frame Action (Операция кадра) необходимо определить ключевые кадры.

  1. Щелкните на нужном номере кадра и выполните команду Insert > Keyframe (Вставка > Ключевой кадр) либо нажмите клавишу F6.
  2. Дважды щелкните на ключевом кадре, чтобы вызвать появление на экране панелей Frame (Кадр) и Frame Actions (Операции кадра).
  3. В поле Label (Метка) панели Frame введите соответствующий комментарий, предваряя текст двумя косыми чертами (//).
  4. Вставьте необходимые инструкции средствами редактора сценариев.

Комментарии и текст сценария, которые следует ввести для ключевых кадров, приведены ниже.

Кадр 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 (Вывод) содержит только текстовые поля и метки для них; в нем нет ключевых кадров. Однако имена переменных, связанных с текстовыми полями, используются в качестве выходных данных сценариев, определенных для ключевых полей.

  1. Чтобы ввести информацию, которая будет располагаться в слое Output, поместите курсор в начало киноленты и выделите этот слой.
  2. Выполните команду Modify > Movie (Модифицировать > Фильм) и щелкните на кнопке Background Color (Цвет фона), чтобы выбрать цвет фона (на рис. 2.7 фон черный). Щелкните на кнопке выбора цвета в панели Character (символ), чтобы определить цвет текста (с черным хорошо сочетается желтый цвет, — если вы в этом сомневаетесь, загляните в файл Frame I/O.fla, находящийся на компакт-диске, приложенном к книге).
  3. Выберите вариант Input Text (Набираемый текст) в верхнем раскрывающемся списке панели Text Options (Параметры текста) и наберите в поле Variable (Переменная) имя Output. Установите флажок Border/Bg (Рамка/Фон).

Адресация переменных в разных кинолентах

Всякий раз, когда вы создаете новый клип, автоматически создается дополнительная кинолента. В дальнейшем вы узнаете, как с помощью команды 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, находящемся на прилагаемом к книге компакт-диске, вы найдете образец фильма, демонстрирующего механизм обмена данными между клипом и главной кинолентой. В этом фильме присутствует несколько слоев и клипов, содержащих сценарии:

  • главная кинолента;
  • клип Indie;
  • слой DataLine;
  • слой Buttons;
  • слой Output.

Фильм DataPaths показывает, как различные объекты могут использовать информацию, получаемую из кинолент. В сценарии, определенном для некоторого кадра клипа, устанавливается значение строковой переменной. Кнопка, находящаяся на главной киноленте, включает в себя сценарий, пересылающий данные клипа в редактируемое текстовое поле, относящееся к главной киноленте; в результате указанные данные отображаются на экране. Кнопка, определенная в клипе, позволяет задать значение текстового поля главной киноленты. При щелчке на этой кнопке соответствующее значение будет отражено в текстовом поле, принадлежащем главной киноленте. Наконец, кнопка, созданная на главной киноленте, позволяет генерировать значение переменной текстового поля главной киноленты. Для адресации каждой из кнопок применяется особый путь, однако все кнопки решают одну и ту же задачу — отображают строковое значение в текстовом поле.

Слой Mainline

Слой Mainline (Главная кинолента) применяется для задания значения переменной, определенной в одном из кадров этого слоя. Кроме того, этот слой является базовым для клипа. Чтобы получить описанную ситуацию, выполните следующие действия.

  1. Создайте новый клип с помощью команды Insert > New Symbol (Вставка > Новый символ). Установите в диалоговом окне Symbol Properties (Свойства символа) переключатель Movie Clip (Клип). Назовите клип indie. При этом вы переходите в режим редактирования символов.
  2. В режиме редактирования символов создайте символ кнопки, определив для него высоту и ширину равными 47 точкам. Назовите кнопку Mbutt.
  3. Выполните команду Window > Panels > Info (Окно > Панели > Информация), чтобы вывести на экран панель Info (Информация). Введите в этой панели константу 47 в качестве значения полей W (Ширина) и Н (Высота). Описанные действия следует выполнить для всех кнопок фильма, как показано на рис. 2.8.
  4. По приведенным ниже образцам введите сценарии для кадров кнопок и клипа.

Для кнопки Mbutt относящейся к клипу indie

on (release) {

_раrent.output = "...from afar/..";

}

Комментарий к кадру 1 клипа indie, находящегося на главной киноленте

iData = "Label your MCM";

Комментарий к кадру 1 главной киноленты

Data = "Main TimeLlne Frame";

Рис. 2.8. Клип в режиме редактирования символов

  1. Щелкните на имени сцены Scene 1 (Сцена 1), находящемся в левом верхнем углу главного окна, чтобы вернуться к главной киноленте. Вы увидите на экране кнопку, которую создали в качестве клипа. Выполните команду Window > Panels > Instance (Окно > Панели > Экземпляр) либо воспользуйтесь комбинацией клавиш Ctrl+I (Windows) или Cmd+I (Macintosh), чтобы открыть панель Instance (Экземпляр). Введите имя экземпляра клипа. Щелкните на кнопке ОК, чтобы закрыть окно и вернуться к главной киноленте.

На рис. 2.9 имя экземпляра, присутствующее в поле Name (Имя), совпадаете вве-денным нами ранее именем символа, однако они вовсе не обязаны совпадать. Более того, если в фильме используется несколько экземпляров клипа, имена символа и экземпляра не могут совпадать.

  1. Определите кадр, который будет использоваться в фильме.
  2. Еще раз проверьте корректность введенных ранее сценариев для копки и клипов, а затем переходите к слою Buttons (Кнопки).

Рис. 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, позволяющая производить округление как в меньшую, так и в большую сторону. В фильме присутствуют два слоя:

  • Output (Вывод);
  • Input (Ввод).

Подготовить такой фильм довольно просто. Сначала на основе информации, содержащейся в табл. 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). Фильм выполняется в цикле; он работает чрезвычайно быстро, поскольку здесь лишь два кадра, а это значит, что сценарий практически всегда либо находится в состоянии ожидания, либо обновляет содержимое экрана. Не успеете вы ввести какое-либо число, как сценарий выдаст результат его округления. Алгоритм работы сценария выглядит так.

  1. В первой строке сценария производится ввод значения входной переменной — числа, обладающего дробной частью. Число набирает на клавиатуре пользователь.
  2. Введенное на предыдущем шаге число преобразуется к целочисленному виду, при этом дробная часть просто отбрасывается.
  3. Полученное целочисленное значение складывается со значением логического выражения. При этом сначала мы получаем дробную часть числа, вычитая округленное значение из исходного. (Заметим, что округленное число не может быть больше исходного, так как функция into во всех случаях производит округление в меньшую сторону.) Логическое выражение можно интерпретировать как высказывание, согласно которому дробная часть исходного числа не больше константы 0,5. Если это утверждение соответствует истине, значением выражения будет значение 1; в противном случае мы получим 0. Мы хотим округлять в сторону увеличения лишь те числа, дробная часть которых больше или равна 0,5. Таким образом, единица прибавляется к результату обычного округления лишь в тех случаях, когда упомянутое логическое выражение истинно. Если дробная часть исходного числа меньше 0,5, результат первоначального округления с помощью функции into остается неизменным.

Проект. Работа с входной информацией для базы данных

Система Flash представляет собой прежде всего мощное средство создания фильмов, которые способны выполняться в Интернете и должны производить впечатление на людей, «прогуливающихся» по Сети. Однако фильмы Flash могут также сохранять информацию, предоставленную пользователем, в базе данных, с которой работает соответствующий Web-сайт. На прилагаемом к книге компакт-диске есть файл DataEntry.fla, содержащий образец фильма, в котором через систему кнопок и редактируемых текстовых полей осуществляется ввод определенных сведений, подлежащих дальнейшему сохранению в базе данных; записи базы по одной выдаются на экран; для очистки экрана применяется кнопка Reset (Сброс). В рассматриваемом фильме присутствуют два слоя:

  • Buttons (Кнопки);
  • Forms (Формы).

На рис. 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. Порядок представления выходных данных изменен для большей наглядности

Слой Buttons

В данном фильме вся обработка сценариев осуществляется щелчками на кнопках Submit (Отправить) и Reset (Сброс). Кнопка Submit позволяет получить данные, введенные пользователем, и вывести их в слегка модифицированном виде. Кнопка Reset осуществляет сброс всех установленных пользователем значений, обнуляя соответствующие поля. Чтобы создать такой фильм, необходимо выполнить следующую последовательность действий.

  1. Создайте две кнопки с именами Submit (Отправить) и Reset (Сброс).
  2. С помощью инструмента Text (Текст) поместите на изображениях кнопок текстовые метки. Сначала следует нарисовать овал, а затем-сделать соответствующую надпись.
  3. Для каждой кнопки выделите овал вместе с текстом метки и выполните команду Modify > Group (Модифицировать > Группировать) либо воспользуйтесь комбинацией клавиш Ctrl+G (Windows) или Cmd+G (Macintosh), чтобы сгруппировать изображение кнопки и надпись.
  4. Нажмите клавишу F8, чтобы преобразовать выделенную группу в символ.

Кнопка 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

Работа с текстовыми полями в слое Forms (Формы) весьма проста. Для каждого поля определена особая переменная, обеспечивающая доступ к данным этого поля. Все текстовые поля позволяют вводить данные; поля выделяются на экране рамкой и цветом фона. Для всех полей, перечисленных в табл. 2.7, установлен темно-коричневый цвет шрифта, чтобы они хорошо выделялись на экране. Возможно, вы предпочтете какой-то другой цвет. Для установки цветов в соответствующих панелях Flash 5 предусмотрены кнопки выбора цвета. Для текстовых полей, в которых пользователь вводит информацию, в панели Text Options (Параметры текста) всегда следует выбирать вариант Input Text (Набираемый текст). Размещая рядом с текстовыми полями метки, выбирайте вариант Static Text (Статический текст).

Таблица 2.7. Текстовые поля базы данных

Имя переменной

Флажок Border/Bg

Способ выравнивания

Lname

Установлен

По левому краю

Fname Установлен Полевому краю
City Установлен Полевому краю

 

Что нового мы узнали?

В этом уроке мы научились...

  • Идентифицировать типы данных в языке ActionScript.
  • Создавать и размещать переменные.
  • Изменять значения переменных с помощью кнопок.
  • Создавать кнопки с текстовыми полями.
  • Работать с переменными в кадрах.
  • Выводить данные, генерируемые сценариями кадров.
  • Адресовать переменные в разных кинолентах.
  • Корректно округлять десятичные значения.
  • Готовить введенные в форму данные к отправке на сервер.

Знаете ли Вы, что диаграмма классов, Class diagram - это методология объектно-ориентированного проектирования, предназначенная для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution