left_top.gif (4373 bytes)

Mahys.narod.ru

Главная
Flash Игры
Исходники
Статьи
Гостевая

Массивы

Если вы интересуетесь массивами, то скорее всего уже знакомы с переменными -- контейнерами для одного фрагмента данных, которые могут быть числом, строкой или булевым значением.

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

quote1="Flash is cool!"
quote2="Flash is my favourite program"
quote3="Flash rules"

Однако, может быть лучше использовать массив? Существует несколько способов создания массива, но сначала я покажу самый простой:

name_of_array=new Array()

Итак, для создания "цитатника" - массива наших цитат, можно использовать:

quotes=new Array()

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

quotes[0]="Flash is cool!"

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

quotes[1]="Flash is my favourite program"

В общем виде, для заполнения элементов массива данными, используется следующий синтаксис:

name_of_array[index]=value

Где:
name_of_array - имя массива,
index - позиция в массиве,
value - фрагмент данных, которые вы хотите добавить вашему массиву.

Таким образом, обозначенные вначале переменные, с использованием массива, можно записать следующим образом:

quotes=new Array()
quotes[0]="Flash is cool!"
quotes[1]="Flash is my favourite program"
quotes[2]="Flash rules"

Это прекрасно, но требует довольно много писанины. Для создания массива также можно использовать более короткий синтаксис:

name_of_array=new Array("value1","value2","value3")

В основном, это тот же самый код, но одной длинной строкой, где: value1 - первый элемент массива, value2 - второй элемент, и так далее... Создаваемый нами массив цитат будет выглядеть так:

quotes=new Array("Flash is cool!","Flash is my favourite program","Flash rules")

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

name_of_array=["value1","value2","value3"]

Этот синтаксис подобен предыдущему случаю, за исключением того, что в нем не используется инициализация объекта массива (new Array()). Таким образом, можно создать наш "цитатник" с помощью следующего кода:

quotes=["Flash is cool!","Flash is my favourite program","Flash rules"]

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

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

mynewvariable=name_of_array[index]

Допустим, мы хотим получить значение первого элемента в нашем массиве цитат и поместить его в новую переменную, тогда:

firstquote=quotes[0]

новая переменная firstquote будет иметь значение "Flash is cool!"

Использование массивов

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

myarraylength=name_of_array.length

Здесь создается новая переменная myarraylength, значение которой будет равно количеству элементов указанного массива (name_of_array). Для определения длины массива нашего "цитатника" можно использовать следующий код:

trace(quotes.length)

На выходе получим тройку (3). Длина массива равна его последнему индексу плюс единица. Последний индекс вашего массива цитат - двойка (2), таким образом, этот массив имеет три элемента (2+1). Не забывайте, что во Flash 5 индексация начинается с нуля (0). Теперь зная, как определять длину массива, можно показать все значения его элементов. В общем виде это будет выглядеть так:

for(z=0;z<name_of_array.length;++z){
trace(name_of_array[z])
}

Рассмотрим подробно работу этого скрипта шаг за шагом.

Сначала создаем временную переменную z:

z=0

Затем задаем условие - цикл выполняется, пока значение z меньше длины массива:

z<name_of_array.length

И затем добавляем единицу к значению переменной z:

++z

Для нашего "цитатника" код будет следующим:

for(z=0;z<quotes.length;++z){
trace(quotes[z])
}

строка trace(quotes[z]) будет повторена в цикле трижды, т.к. длина этого массива равна трем (3) и в каждом цикле будет показано значение текущего элемента quotes[z].

Итак, теперь вы знаете, как создавать массивы, как их использовать и как получать из них значения.

Существует другой тип массивов, о котором я хотел бы вам так же сообщить.

Ассоциативные массивы

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

mycars=new Array()
mycars[0]="peugoet 306"
mycars[1]="citreon saxo"
mycars[2]="ford fiesta"

можно представить как:

mycars=new Array()
mycars["fast"]="peugoet 306"
mycars["sporty"]="citreon saxo"
mycars["old"]="ford fiesta"

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

mysportycar=mycars["sporty"]

Это создаст переменную mysportycar со значением citreon saxo.

Ассоциативные массивы, это в основном объекты, поэтому для добавления элементов можно использовать обычный точечный синтаксис:

name_of_associative_array.index=value

Где index это строка. Попробуем создать наш автомобильный массив, используя этот точечный синтаксис:

mycars=new Array()
mycars.fast="peugoet 306"
mycars.sporty="citreon saxo"
mycars.old="ford fiesta"

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

mysportycar=mycars.sporty

Таким образом, в общем виде точечный синтаксис для доступа к элементам ассоциативного массива будет следующим:

myvariable=name_of_associative_array.index

Автор:TheBeast http://www.flash-gorod.net

2008 www.mahys.narod.ru Находящиеся материалы на сайте пренадлежат их авторам,
При их использовании ссылка на www.mahys.narod.ru обязательна
Hosted by uCoz