On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

Сортировка дублированных MovieClip с использованием двумерного массива

Автор: © JVSh

Этот урок базируется на предыдущем:"Сортировка дублированных MovieClip" и отличается от последнего только использованием двумерного массива.

Поэтому я не буду расписывать его подробно, а только укажу на детали, которые эти примеры отличают друг от друга.Вот подробный код:
//=====================================================================//
pos=[[50,50],[100,50],[150,50],[50,100],[100,100],[150,100],[50,150],[100,150],[150,150]];
for(i=1;i<=9;i++){
   a=random(pos.length);
   x=pos[a][0];
   y=pos[a][1];
   _root.attachMovie("ball", "ball"+i, i);
   eval("ball"+i)._x = x;
   eval("ball"+i)._y = y;
   eval("ball"+i).gotoAndStop(i);
   pos.splice(a, 1);
}
//=====================================================================//
В первой строке кода мы создаем двумерный массив "pos", который в каждом элементе массива содержит второй массив, с координатами для горизонтальной и вертикальной оси.

pos=[[50,50],[100,50],[150,50],[50,100],[100,100],[150,100],[50,150],[100,150],[150,150]];

можно писать и так, если вам привычнее:

pos=new Array();
pos[0]=new Array(50,50);
pos[1]=new Array(50,100);
pos[2]=new Array(50,150);
pos[3]=new Array(100,50);
pos[4]=new Array(100,100);
pos[5]=new Array(100,150);
pos[6]=new Array(150,50);
pos[7]=new Array(150,100);
pos[8]=new Array(150,150);

По сравнению с первой строкой выглядит "потяжелее". Оба блока кода работают одинаково, хотя Смольный (Smolniy), рекомендует воздерживаться от квадратных скобок...Соответственно первый элемент каждого маленького массивчика содержит горизонтальную координату, а второй - вертикальную.

a=random(pos.length);

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

x=pos[a][0];
y=pos[a][1];

А вот теперь мы определим переменные для горизонтальных и вертикальных координат: для этого мы из массива "pos" из элемента [a] берём значение элемента [0] для "x" и значение элемента [1] для "y".

eval("ball"+i)._x = x;
eval("ball"+i)._y = y;
eval("ball"+i).gotoAndStop(i);

Как и в предыдущем примере, задаём сдублированным мувикам их новые координаты, и останавливаем их на кадре с номером соответствующем переменной "i".

pos.splice(a, 1);

И последняя строка, которая убирает из массива "pos" элемент, содержащий "использованные" координаты, сокращая длину массива.
Ну вот и всё.