Показать сообщение отдельно
Старый 22.01.2009, 18:18
ВАРАН вне форума Посмотреть профиль Отправить личное сообщение для ВАРАН Найти все сообщения от ВАРАН
  № 5  
Ответить с цитированием
ВАРАН
 
Аватар для ВАРАН

Регистрация: Aug 2003
Адрес: Москва
Сообщений: 449
Отправить сообщение для ВАРАН с помощью ICQ

Да знаю я как клипы местами менять Так ведь их нельзя просто нашару поменять все. Представь что их не 3 а 200. И у всех разная глубина. Нужен определенный алгоритм сортировки чтобы все их перестроить и не один не потерять. Это как большие пятнашки.

Добавлено через 1 час 34 минуты
Попробую сам дотумкать.
делаем асоциативный массив в который заносим имена всех наших мувиков, и их величину _z. Чтобы они были доступны вот так:
объект=my_array[i].obj
величина _z=my_array[i]._z


Код AS1/AS2:
//затем сортируем массив по этой величине _z
my_array.sortOn(["_z"],Array.NUMERIC);
 
//далее играем в пятнашки
	do {
		r = 0;
                      //бежим по всем элементам
		for (var i = 0; i<my_array.length; i++) {
                                  //получаем реальную глубину ролика
			var depth = my_array[i].obj.getDepth();
                                 //если глубина не совпадает с порядковым номером в массиве свапим ролик на свое место
			if (i<>depth) {
				my_array[i].obj.swapDepths(my_array[depth].obj);
			} else {
				r++;
			}
		}
	} while (r<my_array[i].length-2);
На небольших массивах работает отлично. А вот на больших... неочень. Пропускает некоторые элементы. Видимо алгоритм все равно не тот.
__________________
Он манэ падмэ ХУМ!