![]() |
depth - и с чем его едят
народ, если не сильно облом, объясните пожалуйста что это такое. не то чтобы совсем с нуля а в таком аспекте: я делаю вот что, каждый раз, когда жмут кнопку мыши, создаю дупликат экземпляра клипа, даю ему имя и присваиваю глубину. делаю я это столько раз, сколько нажмут кнопку мыши. и я следующему клипу давал глубину на 1 большую чем предидущему. у меня есть такое подозрение, что глубина эквивалентна номеру слоя, я прав? вопрос состоит в том, можно ли все эти клипы лепить на одной глубине или нет?
и еще одно. я создаю много клипов и хочу чтобы они были под определнным слоем, чтобы нарисованные на этом слое объекты "заслоняли" от зрителя эти клипы, мне что, нужно просто посчитать номер слоя, который находится под данным и присвоить соответствующую глубину клипу? или как? |
Re: depth - и с чем его едят
Цитата:
Цитата:
Цитата:
Что-то я сегодня нездорово добрый :-( |
дополнение насчет МХ:
добавили функцию getDepth, которой так не хватало в пятерке... теперь можно узнать на какой глубине лежит любой клип - включая и те, которые были созданы не динамически, а ручками в таймлайне... клипы, которые ты кладешь в таймлайн ручками в редакторе размещаются по отрицательным глубинам(глубины начиная с -16384 (это отрицательная половинка типа signed int)) (...что будет если в редакторе создать 16385 клипов - остается только догадываться :)))... правда комп все равно помрет раньше - от инфаркта :)) ) можно дублировать, аттачить, и createMovieClip'ить в отрицательную глубину - таким образом перемещая динамически созданные объекты под статические. НО swapDepths будет работать только при глубине большей или равной -16384 (кстати, глубина -16384 всегда остается свободной, если только ты специально не положишь туда что-нить... очень удобное свойство ;)) ) зы: эк меня пробило в пять утра :))) |
Ну Nox Noctis!!!!1 Ну порадовал!!!!
Круто! |
Дополнение к Ноксу. Если на некоторой глубине находится клип, то следующая глубина, в которую флэш что-то кладет, индексуется +2, т.е. одна пропускается. Если на этой глубине лежит графика (глубина -16383 для любого клипа), то пропуска не происходит. От того, как в проекте лежат лэйеры и клипы в этих лэйерах, зависит только их очередность, глубина же выставляется в строгом соответствии с вышеуказанным законом. В хелпе макромедия ведет пропаганду за то, чтобы аттачить и дупликэйтить клипы на такие глубины как 0, 1, и тэдэ. При этом указывается, что приаттаченные клипы всегда окажутся поверх надизайненных. Так вот, это гон. Глубина -17000 при непрозрачном бг, и вы никогда не увидите своего клипа!
Интересно будет проверить, а на какую глубину садятся программные лайны и филлы... |
угумс :))
про +2 я забыл :) а насчет отрицательных глубин - повторюсь: меньше -16384 swapDepths не работает так что если нужно будет свопнуть клипы лежащие глубже - придется морочиться и дублированием, ручками, менять их местами (при этом оба клипа естессно стартанут сначала и потрут свои переменные)... в большинстве случаев такое нафиг не нужно :)) (все равно глубина -16384 ниже самой нижней графики) |
Ну прям "Всё, что Вы хотели узнать о getDepth и changeDepths, но стеснялись спросить" ;))))))
Крутой топик и полезный получился. |
Да, давайте модератор вынесет его с пометкой "важно", а нам с Ноксом поставят по плюсику "за ужас".
2Nox А по-моему можно свапить и ниже. Вечером проверю. |
Да низя низя. Вот полную зачистку сцены, через attachMovie пустому мувику в цикле, произвести можно. Зачем тока? хотя и занятно.
|
м-да... с глубиной все понятно. а все же. как мне решить такую проблему. есть слой (LayerN1), на котором намалеван объект. я в сценарии клипа, который находится над этим слоем (в слое LayerN2), создаю большое множество экземпляров еще одного клипа. только вот я хочу, чтобы эти экземпляры находились ПОД тем другим слоем (LayerN1). как это сделать? методы Flash MX не предлагать :)
зы похоже я позорю своими сообщениями этот топик... |
2greyshaman
насчет зачистки - зачем аттач, когда createEmptyMovieClip работает мгновенно (в отличие от аттача) :)) типа this.createEmptyMovieClip("temp", any_clip.getDepth()); temp.removeMovieClip(); и все киляется :)) 2blackhund в пятерке есть один-единственный способ: все дубликаты делаешь _внутри_ какого-то клипа... и если их нужно все сразу подсунуть под что-то, то просто делаешь swapDepths общего клипа с этим чем-то :)) правда по отдельности свопнуть дубликаты с чем-то _вне_ этого внешнего клипа - невозможно... |
2 Nox Метод не срабатывает на графике (полная зачистка ;) ).
в отличии от duplicateMovieClip EmptyMovieClip и attachMovie |
2greyshaman
"на графике" - это в смысле без мувиклипов вообще ? свободная от мувиклипов графика убивается при _root.createEmptyMovieClip("", -16383); так что нет никакой разницы... ;)) |
А знаете ли вы, что
createEmptyMovieClip attachMovie (?) - не тестировал duplicateMovieClip хотя про них и написано в хелпе Returns Nothing но на самом деле возвращают ссылку на результат своей работы (если они и хотель сделать ретурн насынг, то это ассемблерный баг), соответственно createEmptyMovieClip("Clip", 0)._x = 50; делает именно то, что вы подумали? |
вообще это слегка не по теме конечно...
но это известная фича :)) хэлп дырявый :) даже с эрратой... в коде часто можно увидеть что-т типа: a = this.createEmptyMovieClip(....); кстати, объект мувиклип - далеко не единственный, где ретурн не прописан, но действует: к примеру методы addListener всех объектов возвращают true когда установят лисенер :) но ни в хелпе ни в эррате к хелпу об этом ни слова :)) |
Вернемся к теме. Про индексирование +2, это вы загнули, не сходится, просто ++.
|
если просто создать клип, сделать кучу его дубликатов (Ctrl+D) а потом прогнать
for (i in _root) { if (_root[i] instanceof MovieClip) { trace(_root[i]+" :: "+_root[i].getDepth()); } } то порядок идет именно +2 видимо такой порядок может нарушиться при каких-то операциях... мне влом экспериментировать если честно :)) |
Цитата:
Дело в том, что такая полезная штука, как removeMovieClip() работает исключительно с положительными левелами. -16384 - у нас _level root-а. и если ты зааттачил или же создал клип в _level < 0 то просто так ты его не ремувнёшь. отсюда же вытекает забавная фича - можно ремувить любой мувик, задав ему _level > 0 с помощью "swapDepths([_level > 0]);" |
Цитата:
и поясни насчет "swapDepths([_level > 0]);" :) че-то я не понял в чем пепс :) swapDepths(_level>=-16384) работает нормально, а при _level<-16384 просто не работает, но ничего при этом не ремувит... |
-16384.....
....глубина, глубина, я не твой. отпусти меня, глубина... :))))))))))))) |
Всё же не понял, что там с графикой? Как с ней связана глубина -16383?
2УильямБрэдберри Цитата:
|
Цитата:
и вообще - то был частный случай :) если свапишь не-динамический клип, он начинает действовать как динамический... т.е. не удаляется при переходе по таймлайну. вот и все. |
2Nox Noctis
Цитата:
А что с графикой? (см. мой прдыдущий пост) |
Точно точно ИЗВРАТ.
Когда вектора рисуютя прямо в слое, они что естественно, имеют глубину слоя, на слой понятие чет-нечет не распространяется. |
2greyshaman
Это ты кому?! :confused: |
| Часовой пояс GMT +4, время: 02:07. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.