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

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

< Урок 6 || Урок 7: 1234 || Урок 8 >

Создание масcивов

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

name1 = "John Smith";
name2 = "Kelly McAvoy";
name3 = "Chris Taylor";
name4 = "Tripp Carter";

Предположим, Келли сообщила вам, что не сможет прийти на вечеринку. Поскольку гостей остается только трое, вам придется переименовать все переменные, идущие после ее имени, сдвинуть список вверх. Однако это утомительное дело можно упростить – как и многие подобные задачи, связанные с хранением данных и манипулированием ими – используя массив.

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

Однако чтобы воспользоваться массивом, его нужно сначала создать. А поскольку массив является объектом, то создается он посредством конструктора объекта Array. Синтаксис таков:

myArray = new Array();

Уже при создании вы можете наполнить массив значениями (перечислив их через запятую):

guestList = new Array("John Smith","Kelly McAvoy","Chris Taylor","Tripp Carter");

Или можно использовать альтернативный синтаксис:

guestList = ["John Smith","Kelly McAvoy","Chris Taylor","Tripp Carter"];

Каждому значению в массиве соответствует его номер, называемый индексом: 0, 1, 2 и так далее. В нашем примере "John smith" имеет индекс 0, у "Kelly McAvoy" индекс 1, и так далее. Для доступа к нужному значению массива применяется следующий синтаксис:

myFavoriteGuest = guestList[1];

Здесь переменной myFavoriteGuest будет присвоено значение "Kelly McAvoy", поскольку именно это значение содержится в элементе с индексом 1 массива guestList.

Созданный нами массив guestList содержит четыре элемента. Элементы можно добавлять и изменять в любое время, для этого просто нужно обратиться к нужному элементу. Например, следующий скрипт изменит значение элемента с индексом 2 с "Chris Taylor" на "Kris Tailor":

guestList[2] = "Kris Tailor";

Элемент массива может содержать данные любого типа – строки, числа, булевы значения, а то и целые объекты. Элементом массива может быть даже другой массив. В последующих уроках вы узнаете больше о массивах и о методах объекта Array. А для начала, в следующем упражнении, мы будем использовать массивы для хранения групп данных, связанных между собой.

  1. Не закрывая файл newsFlash2.fla, выделите кадр 1 слоя Actions. После строки monday.date = "Monday, August 20 2001"; вставьте следующий скрипт:
monday.weather = new Array();
monday.weather[0] = "rainy";
monday.weather[1] = "Очень сыро";
monday.weather[2] = 85;
monday.weather[3] = 62;

Мы только что создали массив weather, в котором будем хранить информацию о погоде. Этот массив находится в объекте monday. Запомните это: всю информацию, относящуюся к понедельнику, мы помещаем в объект monday.

На графической сцене вы видите небольшой значок, иллюстрирующий состояние погоды (сейчас он изображает солнце). Этот значок – экземпляр фильма-символа, и его монтажный стол содержит три метки, соответствующие трем картинкам, иллюстрирующим различные погодные условия. Метки называются sunny, rainy и stormy. Впоследствии для перевода этого экземпляра к кадру с нужной меткой мы будем использовать первый элемент (с индексом 0) массива weather.

Здесь мы присвоили этому элементу значение "rainy" – предполагается, что был понедельник дождливым днем. Второй элемент массива weather содержит комментарий погоды понедельника – он будет впоследствии отображен на экране.

Третий и четвертый элементы массива weather содержат температуру воздуха (по шкале Фаренгейта) в понедельник – соответственно, самую высокую и низкую. Эти значения мы тоже впоследствии выведем на экран.

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


  1. Добавьте в скрипт кадра 1 (после строки tuesday.date = "Tuesday, August 21 2001";) следующее:
tuesday.weather = new Array();
tuesday.weather[0] = "sunny";
tuesday.weather[1] = "Прекрасный денек!";
tuesday.weather[2] = 90;
tuesday.weather[3] = 73;

Мы создаем еще один массив с именем weather, только на сей раз он находится в объекте tuesday. Он содержит информацию о погоде на вторник. Первый элемент теперь содержит значение "sunny", так что значок – экземпляр фильма-символа – будет изображать солнышко. Значения всех элементов этого массива отличаются от значений такого же массива для понедельника, но индексы соответствуют друг другу: к примеру, значения наиболее высокой температуры для понедельника и вторника различны, однако оба значения находятся в элементах с индексом 2.

Информацию о погоде мы подготовили и структурировали, теперь можем взяться за другие группы новостей.

  1. Вставив следующий скрипт после строки monday.weather[1] = 62;, создайте массивы для других категорий новостей:
monday.entertainment=new Array();
monday.entertainment[0]="MTV is 20!";
monday.entertainment[1]="The popular TV network MTV has now been on the air for 20 years....";
monday.entertainment[2]="Jobe Makar";
monday.politics=new Array();
monday.politics[0]="Jesse Ventura Wins";
monday.politics[1]="Former WWF wrestler Jesse Ventura is elected governor of
Minnesota...";
monday.politics[2]="Happy Camper";
monday.sports=new Array();
monday.sports[0]="Head Tennis";
monday.sports[1]="The Head Atlantis tennis racquet is one of the most popular raquets 
in history....";
monday.sports[2]="Jane Doe";
monday.technology=new Array();
monday.technology[0]="BajillaHertz Processors!";
monday.technology[1]="The bajillaHertz processor 
has just hit the shelves and is faster than light...";
monday.technology[2]="John Doe";

Наш новостной сайт будет иметь четыре информационных раздела: Развлечения, Политика, Спорт и Технологии (им соответствуют четыре кнопки с левой стороны). Для каждого из этих разделов мы создали массив и поместили в него информацию на понедельник. Для первого раздела мы подготовили массив entertainment. Его первый элемент содержит заголовок статьи новостей, второй элемент – саму статью, а третий элемент – имя автора. Массивы politics, sports и technology содержат такую же информацию (заголовок, статья и автор) для прочих разделов.

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

  1. Добавьте следующий скрипт после строки tuesday.weather[1] = 73;:
tuesday.entertainment=new Array();
tuesday.entertainment[0]="Amazing Sci-Fi";
tuesday.entertainment[1]="Sentrillion Blazers is the must see sci-fi moive of the year!...";
tuesday.entertainment[2]="Jobe Makar";
tuesday.politics=new Array();
tuesday.politics[0]="Tax Refund";
tuesday.politics[1]="Bush issues large tax refund....";
tuesday.politics[2]="John Doe";
tuesday.sports=new Array();
tuesday.sports[0]="Ryder Cup Begins";
tuesday.sports[1]="The European golf tournament you have been waiting for 
has just begun....";
tuesday.sports[2]="Jane Doe";
tuesday.technology=new Array();
tuesday.technology[0]="KatrillaHertz Processor";
tuesday.technology[1]="The katrillahertz processor 
just out and is twice as fast as the bajillahertz chip....";
tuesday.technology[2]="John Doe";

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

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

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

< Урок 6 || Урок 7: 1234 || Урок 8 >
Салтанат Бектегенова
Салтанат Бектегенова

Дострочное пересдача экзамена

 

Евгений Стародубцев
Евгений Стародубцев

Вот задание:

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

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