Назад в раздел
Сортировка дублированных MovieClip
div.main {margin-left: 20pt; margin-right: 20pt}
Сортировка дублированных MovieClip
Несколько раз мне приходилось сталкиваться с таким явлением, как сортировка дублированных мувиков. Применение этого явления разнообразно - от навороченных меню, до игр на флэше. Ну и родилось что-то вроде простенького исходника - для себя. Думаю и вам он пригодится.
В архиве: sort_pos.zip находится исходник этого примера. В этом уроке мы создадим массив с координатами и продублируем несколько мувиков, случайным образом "раскидав" их по этим координатам. Для начала делаем мувик, который будем дублировать. В нашем случае он называется "ball" и содержит семь кадров, с шарами разного цвета (не забудьте "повесить" "stop" на первый кадр). Теперь удалим мувик из основной сцены, а в библиотеке откроем у него вкладку "Linkage". На ней включим кнопку "Export this simbol" , в строке: "Identifier" дадим ему имя: "ball". Теперь напишем сам код. В моём случае он висит на кнопке. Но можно поместить его и на кадр, а также на "onClipEvent(load)" любого мувика. Теперь собственно код сортировки, и как он работает:
//=======================================// xpos=[50,100,150,200,250,300,350]; for(i=1;i<=ball;i++){ a=random(xpos.length); x=xpos[a]; _root.attachMovie("ball","ball"+i,i) eval('ball'+i)._x=x; eval('ball'+i)._y=80; eval('ball'+i).gotoAndStop(i); xpos.splice(a,1); } //=======================================//
xpos=[50,100,150,200,250,300,350];
- в этой строке мы задаём массив с именем "xpos". Значения, которые в нём содержаться - горизонтальные координаты. Для некоторых будет привычнее такой вид записи:
xpos=newArray(50,100,150,200,250,300,350);
Далее мы создаём цикл, внутри которого происходит дублирование клипов, и их сортировка:
for(i=1;i<=ball;i++){ }
переменная "ball" обозначает количество мувиков, которое мы собираемся сортировать. В моём примере эта переменная задаётся в текстовом поле.
a=random(xpos.length);
В этой строке мы задаём временную переменную, которая случайным образом выдаёт нам номер позиции в массиве "xpos". В качестве числа, которым пользуется генератор случайных чисел, мы будем использовать длину массива (определяется строкой "xpos.length").
x=xpos[a];
Эта переменная берёт у нас значение из массива "xpos" с позиции, которую мы определили в предыдущей строке. Её значение мы будем использовать для определения горизонтальной координаты.
_root.attachMovie("ball","ball"+i,i);
Дублируем мувики. В качестве экземпляра возьмём мувик из библиотеки (для этого и пользуемся оператором "attachMovie")с идентификатором "ball". Присваиваем мувику новое имя, составляя его из имени "ball" с номером, который берётся из переменной "i". Здесь же задаём мувику новую "глубину".
eval("ball"+i)._x=x; eval("ball"+i)._y=80;
С помощью оператора "eval" "возвращаем" из выражения ("ball"+i) имя мувика и присваиваем ему новые координаты.
eval("ball"+i).gotoAndStop(i);
В этой строке мы перемещаем сдублированный мувик на кадр, соответствующий переменной "i".
xpos.splice(a,1);
Ну и последняя операция цикла: Из массива "xpos" удаляем использованный элемент. Соответсвенно уменьшается длина массива, и при следующем шаге цикла мы будем оперировать новым набором координат. И так до тех пор, пока массив не окажется исчерпан. В моём примере есть ещё две строки кода. Я думаю их действие будет понятно из комментариев. Можете попробовать усложнить пример, задав ещё один массив: для вертикальных координат.Хотя проще использовать для этого двумерные массивы. Но об этом - в следующем уроке.
Удачи. =JVS©= www.jvs.ru jvsh@mail.ru |
Автор: © JVSh Источник:
http://www.flasher.ru
|
|
|
|