Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.02.2013, 17:31
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 1  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
По умолчанию Распределение всех объектов на сцене по "слоям"

Доброго времени суток.
Столкнулся с проблемой распределения всех объектов на сцене по "слоям", где слой - чисто абстрактное понятие.
Всё пока будет предельно похоже на слои во флэш IDE.
Я не знаю с какой стороны подойти к этой проблеме. Как варианты :

1) Каждый слой будет содержать диапазон значений index'ов элементов на сцене ( getChildIndex()). Если мы добавляем к какому-то слою (L) элемент , мы меняем его z-index таким образом чтобы ни один объект из слоёв уровнем ниже слоя L не был над этим элементом - это если добавленный объект находился ниже объектов слоя L, а если выше - понижаем его индекс так чтобы у него был самый высокий индекс среди объектов в слое L.
Тут возникают большие проблемы в случае удаления элементов - флэш (хорошо это или плохо) не оставляет пустых индексов, т.е. при удалении объекта, если есть другие объекты индексом выше него, они смещаются так чтобы заполнить освободившийся индекс. Т.е. придётся учитывать все возможные смещения и вычислять по новой диапазон индексов для каждого слоя, хоят в принципе это не особо сложно.

2) Просто задать каждому слою по контейнеру (спрайту) и распределять объекты по этим контейнерам. Этот метод проще. Правда в этом случае у меня возникнут некоторые проблемы с выбором объектов с разных слоёв и работой с ними, придётся переписать немного кода.

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

Опять же, если брать второй способ, то когда я буду редактировать отдельную группу, мне придётся все элементы заново раскидывать по спрайтам, когда я закончу её редактировать, придётся обратно их перекладывать.

Второй способ конечно геморный и возможно как-то повлияет на производительность, но первый это вообще разрыв мозга.
Я понимаю что на решение будет сильно влиять уже имеющаяся структура проекта, но, чисто гипотетически, как бы вы поступили на моём месте ?
Или может есть уже что-то похожее и я изобретаю велосипед с квадратными колёсами ?

Старый 04.02.2013, 17:51
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 2  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Вместо кучи текста о ваших сомнениях лучше бы объяснили зачем вам нужны слои. И какие функции они должны выполнять.

Старый 04.02.2013, 17:57
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 3  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Цитата:
Вместо кучи текста о ваших сомнениях лучше бы объяснили зачем вам нужны слои. И какие функции они должны выполнять.
Я же написал
Цитата:
Всё пока будет предельно похоже на слои во флэш IDE.
Не было бы сомнений, я бы не создавал тему.

Старый 04.02.2013, 18:21
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 4  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Похоже на сортировку глубины для изометрии. Ты,часом, не ее делаешь?

Я бы выбрал первый метод. Просто каждому спрайту на сцене соответсвует некоторый z-index, на enterFrame мы производим их сортировку и если кто-то стоит не на своем месте - перемещаем/меняем местами. С производительностью у меня проблем не было, там все ок, если в разумных пределах использовать.
__________________
мой пустой блог

Старый 04.02.2013, 18:31
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 5  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Моя цель достичь ровно того же поведения элементов на сцене как и в IDE - т.е. у меня будут всякие текстфилды, граф. объекты итд, и вот мне нужно их расставить по слоям и задать этим слоям то же поведение что и в IDE.
Так вот я боюсь что выйду за грань разумного когда буду редактировать отдельные группы, где будут свои слои, и так в каждой группе, хотя если хорошо продумать...

И там и там есть свои минусы, вот думаю, где их меньше.

Старый 04.02.2013, 18:35
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 6  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
Вы, там, не визуальный редактор случаем ваяете?
__________________
местонахождение

Старый 04.02.2013, 18:41
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 7  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Да, пытаюсь

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:38.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:38.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.