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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.03.2013, 14:01
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 1  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
По умолчанию Что лучше использовать, контейнеры или массивы.

Давно хотел выяснить для себя что целесообразнее использовать для организации структуры объектов проекта: массивы или контейнеры.
Массивы в данном качестве использую давно, что нельзя сказать о контейнерах. Оговорюсь сразу что понимаю выгоду использования контейнера, например тогда, когда в проекте подразумевается использование слоёв.
Слышал, в том числе и на форуме, негативные отзывы о массивах, в частности о сложности управления объектами при помощи их, в особенности если эти массивы многомерные.
В качестве аргумента в пользу массивов выкладываю упражнение по построению, регулированию и удалению замкнутых контуров отрисованных кривыми Безье второго порядка.
В данном упражнении используется трёхмерный массив объектов. На рабочем поле можно создать несколько замкнутых контуров - это элементы массива первого порядка.
В каждом замкнутом контуре есть наборы объектов, состав одного набора: кривая(спрайт), точка регулирования кривой(спрайт), точка соединения кривых(спрайт) - вместе они массив второго порядка, а каждый в отдельности - элемент третьего порядка.
Данное упражнение имеет два рабочих режима, регулируемых кнопкой: 1.Режим построения контура(жёлтый цвет), 2.Режим регулирования контура(зелёный цвет).
Из режима построения контуров нельзя выйти не закончив какой-либо контур.
В режиме регулирования контуров можно изменять форму сегментов сплайна, добавлять опорные точки(красный цвет) и удалять их, а также удалять выбранные контуры.
Режим регулирования контура (зелёный цвет кнопки):
1.Добавить опорную точку - подвести курсор к линии и после того как он примет форму указателя ссылки - кликнуть по линии.
2.Удалить опорную точку или контур - выбрать красную точку кликнув по ней левой кнопкой мыши, после клика кликнуть правой кнопкой мыши и в контекстном меню выбрать требуемую операцию.
Данное упражнение можно отнести как плюс в применении массивов
curve3.swf   (10.0 Кб)
Вложения
Тип файла: swf curve3.swf (10.0 Кб, 115 просмотров)

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

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

Старый 19.03.2013, 14:28
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 3  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
Можно ведь заносить объекты и в массивы и в контейнеры. Если необходимо отключить активность слоя - это к контейнеру, а если удалить объекты - то сначала найти их в массиве, потом в контейнере, удалить из контейнера и подкорректировать массив?

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

Регистрация: Feb 2011
Сообщений: 431
Цитата:
а если удалить объекты - то сначала найти их в массиве, потом в контейнере, удалить из контейнера и подкорректировать массив
Объекты в любом случае будут в массиве детей контейнера, зачем ещё создавать какой-то массив ?

Старый 19.03.2013, 14:40
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 5  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
Я немного обобщил, сказав выше что в массиве второго уровня только объекты, там не только объекты(спрайты) а ещё кое-какие дежурные данные (строки, числа), т.о. в массиве второго порядка элементов больше 3.

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

Регистрация: Feb 2011
Сообщений: 431
Не надо пихать всё подряд в массив.
Если мы говорим о реализации слоёв, то в случае реализации через массивы, в массиве должны быть только DisplayObject'ы. Если вам надо как-то привязать ко всему этому строки/числа, привяжите их либо к самим ДО, либо создайте отдельный массив для этого.
Но опять же, у меня специфическая задача, те же слои, я думаю, в большинстве случаев будет легче реализовать через контейнер.

Старый 19.03.2013, 15:14
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 7  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
Если есть у кого-нибудь ссылка на толковые материалы об использовании многомерных контейнеров, сортировка, обращение к вложенным контейнерам и т.д. и т.п. - поделитесь плиз.

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

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

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


 


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


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