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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.06.2012, 15:13
viktorami вне форума Посмотреть профиль Отправить личное сообщение для viktorami Найти все сообщения от viktorami
  № 1  
Ответить с цитированием
viktorami

Регистрация: Sep 2011
Сообщений: 524
По умолчанию как избежать конфликта при добавлении на слои?

у меня проблема в том что as3 не разрашает добавлять на слой если большее низкий слой -пустой.
то есть к примеру если у меня заняты слои 2 3 4 то можно добавить только в 5-й а в шестой нет.
Отсюда большая проблема из за необходимости жесткого контроля уже имеющихся слоев. есть какие то программные аппараты облегчающие это? как вы поступаете в подобных случаях - к примеру если надо выстроить много объектов определенным образом перекрывающих друг друга.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Создавать контейнеры-слои, просто пустые спрайты.
Чтобы у каждого было явное положение и назначение.
И потом добавлять объекты не "на деревню дедушке", а в предназначенные для них спрайты-слои.
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 30.06.2012 в 15:43.
Старый 30.06.2012, 16:18
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 3  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
у меня проблема в том что as3 не разрашает добавлять на слой если большее низкий слой -пустой.
Я даже больше скажу - есливы что-то добавите ниже - индексы верхних изменятся.
Для 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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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