iralebedeva.ru :: зелёный коллаж с цветами
КОНТАКТЫ
E-mail: ira.alma@gmail.com

iralebedeva.ru :: зелёный коллаж с цветами
опубликовано 10.03.2004 (г. Алма-Ата)
Flash-мастерская зелёных страничек
Лекционные материалы, домашние задания и тесты
дистанционного курса «Электронная школа Macromedia Flash MX»

Уроки информатики (лекционные материалы и практикумы)


ЭЛЕКТРОННАЯ ШКОЛА MACROMEDIA FLASH MX
IV курс: Углубляемся в программирование Macromedia Flash MX
Модуль III: Одномерные массивы (объект Array)
Язык ActionScript

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

Массивы представляют собой упорядоченные структуры данных. Такие структуры состоят из элементов, каждый из которых имеет свой уникальный индекс (иными словами это порядковый номер элемента в массиве). Зная индекс элемента, мы имеем возможность обратиться к этому элементу. Индекс первого элемента массива в ActionScript равен 0, индекс второго элемента равен 1. Массивы в виде совокупности организованных данных с уникальными индексами повсюду окружают нас в повседневной жизни. Это и номерные знаки автомашин, и номера РНН, и PIN код на сервис-картах для Internet и IP-телефонии…

Объект Array

Для того чтобы создать новый экземпляр объекта Array, необходимо использовать конструктор new Array().

myArray = new Array(3);

В этом примере был создан массив, состоящий из трёх элементов. Однако ни один из элементов массива пока не связан с конкретным значением, массив не заполнен!

myArray = new Array("zero",1,true);

В этом примере массив был заполнен в процессе его образования. Обратите внимание, что язык ActionScript весьма гибок в отношении массивов, в отличие от других языков, в которых установлены очень жёсткие правила инициализации, согласно которым требуется указать конкретное число элементов массива и тип данных для хранящихся в массиве значений. В ActionScript количество элементов массива может быть увеличено по мере необходимости. Кроме того, массив может быть заполнен элементами, относящимися к разным типам данных: строка ("zero"), число (1), булево (true).

Для чтения и записи элементов массива служит оператор [] (квадратные скобки). В квадратных скобках указывается индекс элемента, который может быть создан и записан, а может быть изменён.

myArray = new Array(3);
myArray[0] = "zero";
myArray[1] = "one";
myArray[2] = "two";

Итак, создан массив из трёх элементов и каждому элементу массива присвоено значение. Все три элемента — строки.

Для работы с элементами массива могут быть использованы уже знакомые вам команды: for, if… В частности цикл for существенно упрощает обращение к элементам массива.

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

Далеко в лес мы с вами, конечно, ходить не будем, массивы, с которыми мы будем знакомиться в рамках работы четвёртого курса, и с которыми мы немного познакомились, в примерах этой лекции называются одномерными. Одномерные массивы можно представить себе в виде одиночных столбцов индексированных данных. Для того чтобы иметь возможность оперировать данными массива, нам необходимо познакомиться со свойствами и методами объекта Array.

Свойство у этого объекта только одно, но оно очень важное и полезное. Это длина массива — length. Свойство принимает целое значение, равное числу элементов массива, которое может изменяться вместе с количеством элементов массива. Доступ к свойству можно осуществить, используя, оператор . (точка). Например,

myArray = new Array(3);
myArray[0] = "zero";
myArray[1] = "one";
myArray[2] = "two";
d = myArray.length;
// d присвоено 3

Хотелось бы подчеркнуть одну очень важную деталь, не смотря на то, что массивы в ActionScript отнюдь не должны быть непрерывными (то есть не все элементы могут быть определены), длина массива всегда на единицу больше индекса последнего элемента!

Некоторые методы объекта Array

concat()
Метод concat() предназначен для создания нового массива. Элементами этого нового массива оказываются элементы того массива, из которого данный метод вызывается, а элементы, присоединяемые к массиву, указываются в виде параметров.

music = new Array("C","D","E");
newmusic = music.concat("F");
// элементы нового массива newmusic ["C","D","E","F"]
e = newmusic[3];
// e присвоена строка "F"

Метод позволяет объединить два массива, а, может быть, и три, и четыре в один массив, указав имена объединяемых массивов в виде параметров (если массивов несколько, их имена указываются через запятую).

music1 = new Array("C","D","E");
music2 = new Array("F","G","A","B");
music3 = music1.concat(music2);
// элементы нового массива music3 ["C","D","E","F","G","A","B"]
g = music3[5];
// g присвоена строка "A"

join()
Метод join() объединяет все элементы массива в строку. Если параметры метода не указаны, то по умолчанию в качестве разделителя для элементов массива в созданной строке используется запятая.

birthday = new Array("01","06","1989");
k = birthday.join();
// k присвоена строка "01,06,1989"

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

birthday = new Array("01","06","1989");
m = birthday.join("/");
// m присвоена строка "01/06/1989"

pop()
Метод pop() позволяет удалить последний элемент массива и возвращает его значение. Параметров у этого метода нет, потому как способен он только на удаление последнего элемента и всё.

birthday = new Array("01", "06", "1989");
n = birthday.pop();
// n присвоена строка "1989"
o = birthday[1];
// o присвоена строка "06"

push()
Метод push() позволяет добавить один или несколько элементов в конец массива и возвращает длину видоизменённого массива. В отличие от метода concat(), при использовании которого происходит создание нового массива, метод push() производит лишь видоизменение уже существующего массива.

alphabet = new Array("А","Б","В");
r = alphabet.push("Г","Д","Е","Ж");
// r присвоено 7
p = alphabet[4];
// p присвоена строка "Д"

Все примеры, представленные в материале этой лекции, я очень советую апробировать в Macromedia Flash. Перед вами ролик, в котором собрана первая часть примеров, демонстрирующих работу методов объекта Array, рассмотренных выше.

Для организации работы ролика использованы два слоя и один кадр.

Палитра Timeline. Объект Array

Кадру пропишите скрипт:

myArray = new Array(3);
myArray[0] = "zero";
myArray[1] = "one";
myArray[2] = "two";
music = new Array("C","D","E");
newmusic = music.concat("F");
music1 = new Array("C","D","E");
music2 = new Array("F","G","A","B");
music3 = music1.concat(music2);
birthday = new Array("01","06","1989");
alphabet = new Array("А","Б","В");

Кнопке «заполнить поля» пропишите скрипт:

on (release) {
a = myArray[0];
b = myArray[1];
c = myArray[2];
d = myArray.length;
e = newmusic[3];
g = music3[5];
k = birthday.join();
m = birthday.join("/");
n = birthday.pop();
o = birthday[1];
r = alphabet.push("Г","Д","Е","Ж");
p = alphabet[4];
}

С именами текстовых блоков Dynamic Text, я надеюсь, вы разберётесь самостоятельно. Обязательно побалуйтесь с кнопочкой «заполнить поля» и проанализируйте поведение блоков 3, 4 и 5. Поэкспериментируйте самостоятельно и подумайте, в какой работе вы могли бы эти методы использовать...

Продолжаем разговор. Познакомимся ещё с некоторыми методами объекта Array

reverse()
Метод reverse() позволяет вывернуть массив наизнанку, иными словами переупорядочивает исходный массив, размещая последний его элемент на место первого, предпоследний — на место второго…

myArray = new Array(3);
myArray[0] = "zero";
myArray[1] = "one";
myArray[2] = "two";
myArray.reverse();
a = myArray[0];
// a присвоена строка "two"

shift()
Метод shift() позволяет удалить первый элемент массива, возвращает его значение и сдвигает остальные элементы влево на одну позицию. Параметров у этого метода нет, потому как способен он только на удаление первого элемента и всё. Очень похоже на работу метода pop().

birthday = new Array("01","06","1989");
b = birthday.shift();
// b присвоена строка "01"
c = birthday[0];
// c присвоена строка "06"

slice()
Метод slice() предназначен для создания нового массива, содержащего часть элементов исходного массива. Он не оказывает никакого влияния на исходный массив. Новый массив формируется из элементов исходного по принципу вырезки от… (первый параметр метода — индекс элемента исходного массива) и до… (второй параметр метода — индекс элемента исходного массива).

nume_mas = new Array(1,2,3,4,5,6,7);
nume_mas1 = nume_mas.slice(2,5);
d = nume_mas1.join();
// d присвоена строка "3,4,5"

Наличие первого параметра обязательно, а вот второй параметр метода можно упустить, в этом случае программа использует последний индекс массива.

splice()
Метод splice() позволяет видоизменить существующий массив тремя способами:

  1. удалить один или несколько элементов в любом диапазоне массива;
  2. заменить элементы массива в выбранном вами диапазоне;
  3. ввести новые элементы в существующий массив.

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

Удаление элементов:
nume_mas2 = new Array(2,4,6,8,10);
nume_mas2.splice(1,2);
e = nume_mas2.join();
// e присвоена строка "2,8,10"
Замена элементов:
nume_mas3 = new Array(1,3,4,6,9);
nume_mas3.splice(2,2,5,7);
g = nume_mas3.join();
// g присвоена строка "1,3,5,7,9"
Добавление элементов:
nume_mas4 = new Array(1,2,5);
nume_mas4.splice(2,0,3,4);
j = nume_mas4.join();
// j присвоена строка "1,2,3,4,5"

Обратите внимание, что при добавлении элементов в массив второй параметр метода равен нулю!

unshift()
Метод unshift() позволяет вставить несколько элементов в начало массива, сдвигает вправо остальные его элементы и возвращает длину обновлённого массива.

alphabet = new Array("Г","Д");
k = alphabet.unshift("А","Б","В");
m = alphabet.join();
// m присвоено 5
// k присвоена строка "А,Б,В,Г,Д"

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


Домашнее задание: Основы программирования в Macromedia Flash MX

Не тот грамотен, кто читать умеет, а тот, кто слушает да разумеет.
Русская пословица

Продублируйте ролики, представленные в этой лекции. Выполненное задание представьте в виде файла в формате fla (если размер файла превысит 150 Кб, пожалуйста, упакуйте файл в архив) и вышлите учителю.

Желаю Вам успехов в самостоятельном изучении Macromedia Flash MX!


Предыдущий модуль:
Модуль II: Программное изменение цвета, Изменяем цвет курсора мыши




ваш комментарий *
 
ваше имя

защитный код (цифры с картинки) *







statistics
Рейтинг@Mail.ru       Яндекс.Метрика

Распространение материалов сайта приветствуется.
Ссылка на материалы весьма желательна, но не строго обязательна ;-)
«Знание должно служить творческим целям человека. Мало накоплять знания;
нужно распространять их возможно шире и применять в жизни». Рубакин Н.А.