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

Работа с динамическими данными

< Урок 6 || Урок 7: 1234 || Урок 8 >
Аннотация: Создавая приложения при помощи Flash, вы можете без труда поместить на сцену нужную информацию – с помощью инструмента Text. Введенный таким образом текст будет жестко запрограммированным – его нельзя изменить после опубликования SWF-файла. Если понадобится изменить такие жестко закодированные данные, придется редактировать файл-источник, потом снова опубликовывать – громоздкий процесс, и, на самом-то деле, ненужный – ведь Flash позволяет создавать области, текст в которых будет отображаться динамически. Динамические данные и выводятся во время воспроизведения файла, а значит, вы можете легко и просто изменить их в любое время. К динамическим данным можно отнести информацию, вводимую пользователем, данные, загружаемые из внешнего файла, даже такую информацию, управлять которой вы не можете – например, текущее время. Динамические данные можно использовать для отображения информации на экране, для принятия решений, для манипулирования положением фильмов-символов и многого другого.

В этом уроке мы создадим несложный веб-сайт новостей, при этом вы научитесь использовать динамические данные. Начнем мы с создания объектов и переменных, в которых будет храниться информация для нашего сайта. Затем мы создадим массивы для группировки родственной информации. Ну, а когда информационная структура будет готова, мы создадим на сцене текстовые поля для отображения информации на экране.

Внимание! Для работы с этим уроком необходимы учебные файлы, которые Вы можете загрузить здесь.

Что будет изучаться

В этом уроке:

  • Значение и возможности динамических данных
  • Создание текстовых полей
  • Создание переменных
  • Создание массивов
  • Помещение информации в объекты
  • Динамическое получение данных из хранилища

Сводки погоды и новостей в нашем проекте будут генерироваться в виде структурированных динамических данных.

Время выполнения

На выполнение этого урока требуется примерно один час.

Файлы урока

Файлы-носители:

Нет

Стартовые файлы:

Lesson07/Assets/newsFlash1.fla
Законченные проекты:
newsFlash5.fla

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

Каждый монтажный стол в проекте может содержать собственный набор переменных – так сказать, контейнеров для хранения информации (данных). Создавая переменную, вы должны дать ей название, имя, изменить которое впоследствии будет нельзя; при этом содержимое переменной вы можете изменять. Синтаксис создания переменной таков:

myFullName = "Jobe Makar";

То, что стоит слева от знака равенства, ActionScript воспринимает как имя переменной; справа находится значение.

Примечание Вы можете дать переменной любое имя, удовлетворяющее следующим правилам: имя не должно начинаться с цифры, не должно содержать пробелов, а также специальных символов ( @, #, $, % и тому подобных) и знаков препинания.

Совет Обычно переменным присваивают имена, соответствующие их содержимому – например, numberOfDays, favoriteDogsName, totalTax и так далее – так гораздо проще держать их в памяти, используя в проекте.

После того, как переменная создана и получила значение, это значение можно использовать в любом скрипте, просто сославшись на имя переменной. Вот посмотрите:

favoriteNumber = 66;

Мы создали переменную с именем favoriteNumber и присвоили ей значение 66. Использовать ее значение в скрипте можно следующим образом:

on(release) {
  gotoAndPlay (favoriteNumber); // Монтажный стол перемещается к кадру 66
  cat._xscale = favoriteNumber; // Фильм-символ cat масштабируется по 
вертикали до 66% своего размера
}

Вы видите, в чем состоит сила переменных – в универсальности; это информация, доступная любому скрипту. Если значение переменной изменится, соответственно изменится и результат выполнения скриптов, использующих текущее значение этой переменной.


Существует три основных типа значений переменных:

  • Строковые
  • Логические (булевы)
  • Числовые

Строковое значение – это текст. Например, myFullName = "Jobe Makar" – это присвоение значения строкового типа. Строки обычно используются для хранения всевозможных надписей, например: lastestNews = "Мы приобрели щенка!". На то, что значение относится к строковому типу, указывают кавычки (""). Так, в выражении myFavoriteNumber = "27" переменной присваивается строковое значение, то есть надпись "27", но не число 27.

Булевы, или логические, значения – это true (истинно) или false (ложно), например:

playMusic = true;

В программировании булевы значения часто используются для индикации чего-то такого, что может иметь два состояния (как, например, включено – выключено). Скрипт может проверить текущее состояние (включено или выключено, истинно или ложно) и поступить соответственно. Предположим, вы решили создать во Flash-фильме кнопку включения/выключения музыки, тогда вам может пригодиться булева переменная, хранящая текущее состояние музыки – включена или выключена ( musicPlaying = true либо musicPlaying = false ). К кнопке можно присоединить скрипт, который, при нажатии кнопки, будет проверять, играет ли музыка в данный момент ( true или false ). Если музыка включена, ( musicPlaying = true ), то скрипт должен выключить ее и изменить значение переменной на false. Если же музыка выключена, ( musicPlaying = false ), то скрипт поступит наоборот – включить музыку, а переменной присвоит значение true. Таким, образом значение переменной musicPlaying будет меняться между true и false при каждом нажатии кнопки.

Примечание В Уроке 9 – Использование логических условий будет более подробно рассказано о булевых значениях и их использовании.

Числовые значения в точности соответствуют своему названию – это обычные числа. Ну, как и для чего использовать числа, наверное, объяснять не надо. Продемонстрируем лишь, как присвоить переменной числовое значение:

radius = 32;

Вместо присвоения переменным "прямых" значений (констант, или литералов) – например, 32, "dog", или чего-либо в этом роде – можно использовать выражения. Выражение составляется из переменных, чисел, строк, операторов, функций; в результате его вычисления должно получиться некоторое значение – строковое, числовое или булево. Например:

bottlesOfBeerOnTheWall = 99;
oneFellDown = 1;
bottlesLeft = bottlesOfBeerOnTheWall - oneFellDown;

В третьей строке этого скрипта в качестве значения, присваиваемого переменной bottlesLeft, использовано выражение. В выражение подставляются значения переменных (99 и 1), затем выполняется вычитание. В результате переменной bottlesLeft присваивается значение 98. Следует заметить, что в зависимости от того, как и из каких компонентов построено выражение, результатом может быть либо число, либо строка, либо булево значение.

Присваивая значения переменным, не стоит использовать слишком длинные выражения. Давайте рассмотрим еще такой пример:

someone = "Jobe Makar";
coffeeBoy = someone;

В данном примере в первой строке создается переменная с именем someone. Во второй строке переменной coffeeBoy присваивается значение "Jobe Makar" – путем ссылки на переменную someone. Если впоследствии значение someone изменится, на coffeeBoy это не отразится.

Примечание Также переменная может получить значение в результате выполнения функции. Подробнее об этом смотри в Уроке 5 – Применение функций.

Flash-проекты могут содержать много монтажных столов, каждый из которых может иметь свой набор динамических данных (переменные, массивы и т.п.). Данные будут находиться на том монтажном столе, куда вы поместите их при создании. Следующая строка скрипта создает переменную (с именем myVariable ) в текущем фильме:

myVariable = 100;

А следующая строка создает переменную myVariable на корневом, или главном, монтажном столе:

_root.myVariable = 100;

Как видите, здесь при создании переменной использована адресация. Таким манером можно создавать данные (или обращаться к ним) на любом монтажном столе.


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

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

  1. Откройте файл newsFlash1.fla из папки Lesson07/Assets.

Этот файл пока не содержит скриптов, но общая структура – кадры и фильмы-символы – уже создана.

На основном монтажном столе имеется три метки: initialize, refresh и sit. Первая меткаinitialize – отмечает место, где мы будем подготавливать данные для сайта. На следующей метке, refresh, будут находиться скрипты, предназначенные для выбора данных, которые должны быть отображены на экране. Ну, а на последней метке, sit, курсор воспроизведения будет "отдыхать", пока нам не вздумается изменить информацию на экране.

Переместив курсор к кадру с меткой refresh, вы увидите графическое оформление нашего сайта – оно уже создано. Однако здесь пока отсутствуют текстовые поля для отображения информации.

  1. Выделите кадр 1 слоя Actions на основном монтажном столе. Откройте панель Действия и введите следующий скрипт:
// ----Monday--------
monday = new Object();
monday.date = "Monday, August 20 2001";
// ----Tuesday--------
tuesday = new Object();
tuesday.date = "Tuesday, August 21 2001";

С целью структурирования данных для этого приложения мы используем объекты – название каждого из них будет соответствовать одному из дней недели; в этих объектах будут храниться новости каждого дня. В упражнении мы ограничимся объектами только для понедельника и вторника (Monday и Tuesday), поскольку для остальных дней недели все работает точно так же.

Итак, этим скриптом, помещенным в кадр 1 основного монтажного стола, мы создали два объекта – monday и tuesday. К каждому из этих объектов мы добавили переменную (или свойство объекта) date, в которой будет храниться дата каждого из дней.

  1. Сохраните свою работу как newsFlash2.fla.

Итак, первые переменные мы создали. В следующем упражнении создадим еще.

< Урок 6 || Урок 7: 1234 || Урок 8 >
Евгений Стародубцев
Евгений Стародубцев

Вот задание:

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

Галина Кузнецова
Галина Кузнецова

Добрый день.

Можно ли получить среду Flash для обучения бесплатно?

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