Просмотр полной версии : Почему не работает addChilAt()
Мне необходимо добавлять новый MovieClip (или DisplayObject) на определенный слой (как раньше depth). При использовании addChildAt(), происходит ошибка (все что нужно я импортирую). Как можно с этим справиться?
Для начала -- указать, что же за ошибка
Раз ответа нет, предположу: вы не понимаете, зачем нужен addChildAt. Он добавляет объект в позицию по глубине, но это уже не так глубина, что раньше. AS3 рулит глубинами сам.
Если вы хотите не указать визуальную глубину, а просто добавить элемент так, чтобы он не заместил другой -- используйте addChild и не парьтесь.
Мне нужно именно задавать глубину, а не распологать их по порядку. Например нужно для одного задать одну глубину, а для другого совершенно другую. А ошибка возникает следующая - №2006 the supplied index is out of bounds.
Повторяю: ActionScript 3 сам управляет глубинами. Если надо вынести объект визуально выше из списка соседей по контейнеру (читай: других детей этого же объекта-родителя), тогда используется addChildAt, но при этом параметр индекса не может быть больше, чем число элементов. Поэтому, добавлять первый объект через это свойство бессмысленно.
Этот метод создан для вставки объекта в середину по визуальной глубине, а также создания bring to front / send to back.
А если все таки необходимо чтобы между объектами была разница не в 1, а в заданное количество единиц по глубине... Нужно сделать так чтобы в одном объекте было несколько объектов с заданными глубинами (например 1000, 2000, 3000 и т.д.)
Вопрос сразу: а зачем?
Чтобы запихать под второй потом еще 999? Это говорит о неверной иерархии мувиклипов в приложении.
Adobe все верно сделали, автоматическое руление глубинами __рулит__.
Опишите задачу шире, что-нибудь подскажем.
BlooDHounD
20.02.2006, 21:18
хочу сам не знаю чего, мне не привычно. сделайте пожалуйста как было, а то мне 3 раза объяснили, а я так и не понял %)
Делаю игру, нужно чтобы юнит скрывался за объектом, у меня есть сектор в секторе максимум 50 объектов (все в BitmapData), и может быть до 100 юнитов. Чтобы скрыть юнита за объектом я хочу сделать следующее проверяю юнита на столкновение с объектом, а затем делаю следующее у каждого объекта есть маска, под которой я буду скрывать юнита (для этого делаю у маски blendMode="erase", а юнита ставлю под (по глубине) маску для этого у маски глубина должна быть равна не 1,2,3,....., а примерно 1000,2000,3000... чтобы под один объект запихать несколько юнитов......... Вобщем объяснить достаточно сложно, но я делал это под 7 flash, затем подгонял под 8-ой, а теперь и под flex нужно переделывать. Подбирал достаточно много способов скрытия за объетами наиболее оптимальный этот (который слишком долго объяснять). Я толко начал осваиваться в flex, и для того чтобы действительно переделывать все под flex мне нужно понять как можно сделать некоторые основные элементы.....
Не подо Флекс, а под АС3.
Во Флекс игру не сделаешь. А не проще воспользоваться возможностью цеплять любой объект к любому контейнеру? Т.е. взять юнита и перетащить в некий слой для скрытия... Раньше это было невозможно, а теперь к чему ужиматься?
Вчера так и подумал, немного по-другому правда, но смысл тот же. Только вот про контейнеры не знал, Спасибо за подсказку....
Еще кстати хотел поинтересоваться пытался ли кто-нибудь вставлять определенный символ из swf файла. Я пробовал так [Embed(source="", symbol="")] , но почему-то это не сработало. И можно ли сделать так чтобы в библиотеки был swf, а затем можно было брать любой символ из библиотеки в swf файле.
BlooDHounD
21.02.2006, 11:23
можно ... но только дл этого нужен 9й флэш :)
из 7го нужно юзать специальный клас %)
Закрыто. В правилах четко написано: одна тема на тред.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.