![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Feb 2011
Сообщений: 431
|
Доброго времени суток.
Столкнулся с проблемой распределения всех объектов на сцене по "слоям", где слой - чисто абстрактное понятие. Всё пока будет предельно похоже на слои во флэш IDE. Я не знаю с какой стороны подойти к этой проблеме. Как варианты : 1) Каждый слой будет содержать диапазон значений index'ов элементов на сцене ( getChildIndex()). Если мы добавляем к какому-то слою (L) элемент , мы меняем его z-index таким образом чтобы ни один объект из слоёв уровнем ниже слоя L не был над этим элементом - это если добавленный объект находился ниже объектов слоя L, а если выше - понижаем его индекс так чтобы у него был самый высокий индекс среди объектов в слое L. Тут возникают большие проблемы в случае удаления элементов - флэш (хорошо это или плохо) не оставляет пустых индексов, т.е. при удалении объекта, если есть другие объекты индексом выше него, они смещаются так чтобы заполнить освободившийся индекс. Т.е. придётся учитывать все возможные смещения и вычислять по новой диапазон индексов для каждого слоя, хоят в принципе это не особо сложно. 2) Просто задать каждому слою по контейнеру (спрайту) и распределять объекты по этим контейнерам. Этот метод проще. Правда в этом случае у меня возникнут некоторые проблемы с выбором объектов с разных слоёв и работой с ними, придётся переписать немного кода. Я сделал редактирование отдельной группы объектов, в каждой группе будет своё распределение по слоям, и в группах вложенных в этих группах итд итп. Если брать второй способ, это означает что придётся для каждой группы держать набор таких вот спрайтов. А если брать первый способ, просто будут массивы с данными о том какой элемент принадлежит какому слою внутри группы. Сама группа (которая кстати тоже чисто абстрактное понятие) тоже будет принадлежать слою, и к ней также будет привязываться диапазон индексов. Вот тут я ещё не додумал как следует. Опять же, если брать второй способ, то когда я буду редактировать отдельную группу, мне придётся все элементы заново раскидывать по спрайтам, когда я закончу её редактировать, придётся обратно их перекладывать. Второй способ конечно геморный и возможно как-то повлияет на производительность, но первый это вообще разрыв мозга. Я понимаю что на решение будет сильно влиять уже имеющаяся структура проекта, но, чисто гипотетически, как бы вы поступили на моём месте ? Или может есть уже что-то похожее и я изобретаю велосипед с квадратными колёсами ? |
![]() |
Часовой пояс GMT +4, время: 18:52. |
|
|
« Предыдущая тема | Следующая тема » |
|
|