Показать сообщение отдельно
Старый 16.05.2013, 02:41
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 8  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Перс ходит по лесу между деревьями. Как сортировать будем, если деревья координат не меняют? Или я не понял идеи?
0) объект добавлен на карту -> назначаем ему индекс глубины (Number, например object.x + object.y * 1000)
1) объект поменял координаты -> заносим его в список апдейтов
2) раз в кадр проходим по всему списку объектов
3) Для каждого объекта в списке
- вычисляем индекс глубины заново
- сравниваем свой индекс с индексом соседа "сверху"
- если у соседа индекс такой, что он должен быть "снизу", спрашиваем следующего
- повторяем до тех пор, пока список "вверх" не заканчивается или пока не находим того, кто точно должен быть "сверху" от нас после апдейта

... то же самое "вниз" если нужно

... setChildIndex перемещает только один объект

Стоит учесть, что на практике объекты не прыгают через всю карту, а значит количество шагов вверх или вниз всегда небольшое. Вычислений реально мало. Количество объектов на экране вообще значения не имеет (в отличие от quickSort), важно только сколько из них передвинулось. Вру конечно про "не имеет", но можно пренебречь, когда попробуете сами увидите.

Это называется сортировка вставками и на данных, которые уже отсортированы она показывает офигитительные результаты, смотрите сами:
http://www.sorting-algorithms.com/
__________________
...вселенская грусть