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