|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Sep 2011
Сообщений: 524
|
как избежать конфликта при добавлении на слои?
у меня проблема в том что as3 не разрашает добавлять на слой если большее низкий слой -пустой.
то есть к примеру если у меня заняты слои 2 3 4 то можно добавить только в 5-й а в шестой нет. Отсюда большая проблема из за необходимости жесткого контроля уже имеющихся слоев. есть какие то программные аппараты облегчающие это? как вы поступаете в подобных случаях - к примеру если надо выстроить много объектов определенным образом перекрывающих друг друга. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Создавать контейнеры-слои, просто пустые спрайты.
Чтобы у каждого было явное положение и назначение. И потом добавлять объекты не "на деревню дедушке", а в предназначенные для них спрайты-слои.
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 30.06.2012 в 15:43. |
|
|||||
Цитата:
Для 90% случаев это хорошо, когда слои - просто список (вспомните, как мучались с поиском свободного индекса в AS1-2, а если вставить было некуда - так перебивать все верхние индексы приходилось или делать индексирование с запасом - цирк ещё тот был) Способы решения для остальных 10%: 1 Kак сказал Wolsh - создать нужное количество контейнеров на нужных глубинах и таскать детей с одного на другой. 2 Кое-где может хватить простых комманд "вставить перед таким-то объектом" (реализуется взятием индекса искомого объекта и вставкой на этот индекс требуемого) и "вставить после такого-то объекта" (реализуется вставкой в index + 1) 3 Cделать свой IndexedSprite в стиле MovieClip AS1-2 a) Заблокировать у IndexedSprite addChild, чтобы не перетирали постоянные индексы нечаянно (просто исключение кидать при вызове) b) переопределить поведение addChildAt, чтобы переводил "виртуальные", могущие быть разреженными, индексы в реальные и добавлял детей в эти индексы c) переопределить getChildAt, чтобы возвращал реальные индексы по виртуальным d) переопределить removeChildAt e) учесть, что реальные индексы могут меняться при неизменных виртуальных f) реализовать удаление старого ребёнка при добавлении нового в тот же индекс (или сделать выброс исключения) Кое-где такой использовал. Реализация была на обычном массиве, поиск реальных индексов был бинарным, что-бы хоть-как-то сэкономить. Единственное, его надо очень тщательно протестировать (все частные, пограничные случаи и выброс исключений) до использования - иначе занимательный поиск ошибок в приложении гарантирован. Последний раз редактировалось expl; 30.06.2012 в 16:26. |
Часовой пояс GMT +4, время: 16:02. |
|
« Предыдущая тема | Следующая тема » |
|
|