![]() |
|
||||||||||
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Решил перейти в своей игре с виду сверху на вид под углом 45 градусов, почти как в изометрии, но тут сразу же уперся в необходимость Y-сортировки. Вся фишка в том, что объектов у меня целая куча, как разных деревьев и домов, так и персонажей, а учитывая то, что игра работает на Box2D, да еще и Union, который тоже проводит огромное количество расчетов, покадровая сортировка массива объектов простым способом sortOn("y", Array.NUMERIC) мне представляется не самой лучшей идеей.
Но есть ли что-то лучше? Или мне прийдется "изобретать велосипед"? |
|
|||||
|
Lorem ipsum
|
Вектор, к слову, сортируется существенно быстрее массива.
__________________
Поймай яблоко 2! |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Только что мне даст вектор? Мне нужно сортировать разные типы объектов.
Хотя.. если попробовать добавлять их как DisplayObject. Но в этом случае прийдется приводить все к типу DisplayObject, так как если верить справке адоби Цитата:
Последний раз редактировалось goodguy; 18.05.2011 в 21:00. |
|
|||||
|
Lorem ipsum
|
Можно создать объект с полями id и y (к примеру) и работать с ним при сортировке.
__________________
Поймай яблоко 2! |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Это все равно будет отжирать много ресурсов. Нужно же еще индексы всех этих объектов менять в контейнере. А карты там есть огромные.
Думаю нужно написать код, который позволит сортироваться только тем объектам, которые находятся в видимом поле, а остальные хранить в отдельном массиве. Не знаю, на сколько это будет эффективно, надо попробовать |
|
|||||
|
Lorem ipsum
|
Может я недостаточно вник, но насколько велика нагрузка от следующего алгоритма:
1. создать новый вектор 2. внести в него id и y видимых объектов (как я написал выше) 3. отсортировать вектор по y Нормальный fps должен проглотить эту схему только так.
__________________
Поймай яблоко 2! |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
У меня там есть джунгли, и отряд солдат, нужно с каждым их шагом просчитывать обстановку так, чтобы джунгли не росли у них из головы, или наборот они не лазили по кронам деревьев. И это при том, что там еще и несколько видов транспортных средств управляемых с помощью бокс2д и юниона, да и сам фон, представляющий из себя довольно большую битмапку |
|
|||||
|
Я так понимаю, Вы говорите о сортировке примитивных типов?
Цитата:
И еще, раз уж тема об оптимальной сортировке: подскажите, каким алгоритмом Vector сортирует свои элементы? Возможно иной раз эффективнее самому реализовать например quicksort для сортировки, чем пользоваться "зашитым" алгоритмом. |
|
|||||
|
Lorem ipsum
|
Я сортировал вектор массивов с двумя элементами z:Number и item:SomeClass. Скорость была существенно выше сортировки массива.
Цитата:
__________________
Поймай яблоко 2! |
|
|||||
|
могу и ошибаться, просто собственные ощущения:
когда ковырял подобную тему, пришел к выводу, что время на саму сортировку не столь важно, потому как затраты на перемещение отсортированных объектов в дисплейлисте все равно все перекрывают к слову, для сортировки остановился на http://artman.fi/2009/06/as3-sorting...ative-sorting/ , модифицировав его под сортировку по полю объекта |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:08. |
|
|
« Предыдущая тема | Следующая тема » |
|
|