Дострочное пересдача экзамена
|
Работа с динамическими данными
В этом уроке мы создадим несложный веб-сайт новостей, при этом вы научитесь использовать динамические данные. Начнем мы с создания объектов и переменных, в которых будет храниться информация для нашего сайта. Затем мы создадим массивы для группировки родственной информации. Ну, а когда информационная структура будет готова, мы создадим на сцене текстовые поля для отображения информации на экране.
Что будет изучаться
В этом уроке:
- Значение и возможности динамических данных
- Создание текстовых полей
- Создание переменных
- Создание массивов
- Помещение информации в объекты
- Динамическое получение данных из хранилища
Сводки погоды и новостей в нашем проекте будут генерироваться в виде структурированных динамических данных.
Время выполнения
На выполнение этого урока требуется примерно один час.
Файлы урока
Файлы-носители:
Нет
Стартовые файлы:
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;
Как видите, здесь при создании переменной использована адресация. Таким манером можно создавать данные (или обращаться к ним) на любом монтажном столе.
Совет Если вдруг ваш проект не заработал, как вы планировали, стоит поискать ошибки в адресации при обращении к элементам данных. Ошибка всего в одной строке скрипта – попытка доступа к данным с неправильной адресацией – может полностью нарушить работу приложения.
Динамические текстовые поля можно использовать для отображения значения, содержащегося в определенном элементе данных. В этом уроке мы создадим переменные и будем, используя их, полностью управлять информацией, отображаемой в нашем проекте новостного веб-сайта.
- Откройте файл newsFlash1.fla из папки Lesson07/Assets.
Этот файл пока не содержит скриптов, но общая структура – кадры и фильмы-символы – уже создана.
На основном монтажном столе имеется три метки: initialize, refresh и sit. Первая метка – initialize – отмечает место, где мы будем подготавливать данные для сайта. На следующей метке, refresh, будут находиться скрипты, предназначенные для выбора данных, которые должны быть отображены на экране. Ну, а на последней метке, sit, курсор воспроизведения будет "отдыхать", пока нам не вздумается изменить информацию на экране.
Переместив курсор к кадру с меткой refresh, вы увидите графическое оформление нашего сайта – оно уже создано. Однако здесь пока отсутствуют текстовые поля для отображения информации.
- Выделите кадр 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, в которой будет храниться дата каждого из дней.
- Сохраните свою работу как newsFlash2.fla.
Итак, первые переменные мы создали. В следующем упражнении создадим еще.