Опубликован: 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 и введите следующий скрипт:

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