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