Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Почему не работает addChilAt() (http://www.flasher.ru/forum/showthread.php?t=75815)

dipter 20.02.2006 18:40

Почему не работает addChilAt()
 
Мне необходимо добавлять новый MovieClip (или DisplayObject) на определенный слой (как раньше depth). При использовании addChildAt(), происходит ошибка (все что нужно я импортирую). Как можно с этим справиться?

Antares 20.02.2006 18:53

Для начала -- указать, что же за ошибка

Antares 20.02.2006 20:03

Раз ответа нет, предположу: вы не понимаете, зачем нужен addChildAt. Он добавляет объект в позицию по глубине, но это уже не так глубина, что раньше. AS3 рулит глубинами сам.

Если вы хотите не указать визуальную глубину, а просто добавить элемент так, чтобы он не заместил другой -- используйте addChild и не парьтесь.

dipter 20.02.2006 20:10

Мне нужно именно задавать глубину, а не распологать их по порядку. Например нужно для одного задать одну глубину, а для другого совершенно другую. А ошибка возникает следующая - №2006 the supplied index is out of bounds.

Antares 20.02.2006 20:37

Повторяю: ActionScript 3 сам управляет глубинами. Если надо вынести объект визуально выше из списка соседей по контейнеру (читай: других детей этого же объекта-родителя), тогда используется addChildAt, но при этом параметр индекса не может быть больше, чем число элементов. Поэтому, добавлять первый объект через это свойство бессмысленно.

Этот метод создан для вставки объекта в середину по визуальной глубине, а также создания bring to front / send to back.

dipter 20.02.2006 21:09

А если все таки необходимо чтобы между объектами была разница не в 1, а в заданное количество единиц по глубине... Нужно сделать так чтобы в одном объекте было несколько объектов с заданными глубинами (например 1000, 2000, 3000 и т.д.)

Antares 20.02.2006 21:14

Вопрос сразу: а зачем?
Чтобы запихать под второй потом еще 999? Это говорит о неверной иерархии мувиклипов в приложении.

Adobe все верно сделали, автоматическое руление глубинами __рулит__.
Опишите задачу шире, что-нибудь подскажем.

BlooDHounD 20.02.2006 21:18

хочу сам не знаю чего, мне не привычно. сделайте пожалуйста как было, а то мне 3 раза объяснили, а я так и не понял %)

dipter 20.02.2006 21:57

Делаю игру, нужно чтобы юнит скрывался за объектом, у меня есть сектор в секторе максимум 50 объектов (все в BitmapData), и может быть до 100 юнитов. Чтобы скрыть юнита за объектом я хочу сделать следующее проверяю юнита на столкновение с объектом, а затем делаю следующее у каждого объекта есть маска, под которой я буду скрывать юнита (для этого делаю у маски blendMode="erase", а юнита ставлю под (по глубине) маску для этого у маски глубина должна быть равна не 1,2,3,....., а примерно 1000,2000,3000... чтобы под один объект запихать несколько юнитов......... Вобщем объяснить достаточно сложно, но я делал это под 7 flash, затем подгонял под 8-ой, а теперь и под flex нужно переделывать. Подбирал достаточно много способов скрытия за объетами наиболее оптимальный этот (который слишком долго объяснять). Я толко начал осваиваться в flex, и для того чтобы действительно переделывать все под flex мне нужно понять как можно сделать некоторые основные элементы.....

Antares 21.02.2006 00:57

Не подо Флекс, а под АС3.

Во Флекс игру не сделаешь. А не проще воспользоваться возможностью цеплять любой объект к любому контейнеру? Т.е. взять юнита и перетащить в некий слой для скрытия... Раньше это было невозможно, а теперь к чему ужиматься?


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

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