Просмотр полной версии : depth - и с чем его едят
blackhund
10.07.2002, 20:53
народ, если не сильно облом, объясните пожалуйста что это такое. не то чтобы совсем с нуля а в таком аспекте: я делаю вот что, каждый раз, когда жмут кнопку мыши, создаю дупликат экземпляра клипа, даю ему имя и присваиваю глубину. делаю я это столько раз, сколько нажмут кнопку мыши. и я следующему клипу давал глубину на 1 большую чем предидущему. у меня есть такое подозрение, что глубина эквивалентна номеру слоя, я прав? вопрос состоит в том, можно ли все эти клипы лепить на одной глубине или нет?
и еще одно. я создаю много клипов и хочу чтобы они были под определнным слоем, чтобы нарисованные на этом слое объекты "заслоняли" от зрителя эти клипы, мне что, нужно просто посчитать номер слоя, который находится под данным и присвоить соответствующую глубину клипу? или как?
Egoritch
10.07.2002, 22:52
Оригинал написал(а) blackhund
народ, если не сильно облом
/* skipped */
. и я следующему клипу давал глубину на 1 большую чем предидущему. у меня есть такое подозрение, что глубина эквивалентна номеру слоя, я прав?
нет, не прав. Глубина задается для каждой сцены. Не важно, в каком слое лежит объект, если они все будут на одной сцене (не точно сказал - "сценой" называют немного другое, а я имею ввиду уровень типа), то не имеет значения, в каком они слое, главное - та глубина, которую ты задал при аттаче и дублицировании , swapDepths'e.
вопрос состоит в том, можно ли все эти клипы лепить на одной глубине или нет?
никак нельзя. Глубина у каждого объекта уникальная. Приаттачив мовик на ту глубину, где уже лежал объект, ты удалишь его (старый объект).
и еще одно. я создаю много клипов и хочу чтобы они были под определнным слоем, чтобы нарисованные на этом слое объекты "заслоняли" от зрителя эти клипы, мне что, нужно просто посчитать номер слоя, который находится под данным и присвоить соответствующую глубину клипу? или как?
или как. тебе нужно создать мувик В КОТОРОМ ТЫ БУДЕШЬ как хочешь менять глубину других мувиков. Если родительский мувик будет лежать под каким-то слоем, то и остальные , дочерние, тоже будут под этим слоем.
Что-то я сегодня нездорово добрый :-(
Nox Noctis
11.07.2002, 05:48
дополнение насчет МХ:
добавили функцию getDepth, которой так не хватало в пятерке... теперь можно узнать на какой глубине лежит любой клип - включая и те, которые были созданы не динамически, а ручками в таймлайне...
клипы, которые ты кладешь в таймлайн ручками в редакторе размещаются по отрицательным глубинам(глубины начиная с -16384 (это отрицательная половинка типа signed int))
(...что будет если в редакторе создать 16385 клипов - остается только догадываться :)))... правда комп все равно помрет раньше - от инфаркта :)) )
можно дублировать, аттачить, и createMovieClip'ить в отрицательную глубину - таким образом перемещая динамически созданные объекты под статические.
НО swapDepths будет работать только при глубине большей или равной -16384
(кстати, глубина -16384 всегда остается свободной, если только ты специально не положишь туда что-нить... очень удобное свойство ;)) )
зы: эк меня пробило в пять утра :)))
Egoritch
11.07.2002, 13:56
Ну Nox Noctis!!!!1 Ну порадовал!!!!
Круто!
DeliMIter
11.07.2002, 17:17
Дополнение к Ноксу. Если на некоторой глубине находится клип, то следующая глубина, в которую флэш что-то кладет, индексуется +2, т.е. одна пропускается. Если на этой глубине лежит графика (глубина -16383 для любого клипа), то пропуска не происходит. От того, как в проекте лежат лэйеры и клипы в этих лэйерах, зависит только их очередность, глубина же выставляется в строгом соответствии с вышеуказанным законом. В хелпе макромедия ведет пропаганду за то, чтобы аттачить и дупликэйтить клипы на такие глубины как 0, 1, и тэдэ. При этом указывается, что приаттаченные клипы всегда окажутся поверх надизайненных. Так вот, это гон. Глубина -17000 при непрозрачном бг, и вы никогда не увидите своего клипа!
Интересно будет проверить, а на какую глубину садятся программные лайны и филлы...
Nox Noctis
11.07.2002, 17:30
угумс :))
про +2 я забыл :)
а насчет отрицательных глубин - повторюсь: меньше -16384 swapDepths не работает
так что если нужно будет свопнуть клипы лежащие глубже - придется морочиться и дублированием, ручками, менять их местами (при этом оба клипа естессно стартанут сначала и потрут свои переменные)...
в большинстве случаев такое нафиг не нужно :))
(все равно глубина -16384 ниже самой нижней графики)
Egoritch
11.07.2002, 17:53
Ну прям "Всё, что Вы хотели узнать о getDepth и changeDepths, но стеснялись спросить" ;))))))
Крутой топик и полезный получился.
DeliMIter
11.07.2002, 18:10
Да, давайте модератор вынесет его с пометкой "важно", а нам с Ноксом поставят по плюсику "за ужас".
2Nox
А по-моему можно свапить и ниже. Вечером проверю.
greyshaman
11.07.2002, 18:20
Да низя низя. Вот полную зачистку сцены, через attachMovie пустому мувику в цикле, произвести можно. Зачем тока? хотя и занятно.
blackhund
11.07.2002, 18:46
м-да... с глубиной все понятно. а все же. как мне решить такую проблему. есть слой (LayerN1), на котором намалеван объект. я в сценарии клипа, который находится над этим слоем (в слое LayerN2), создаю большое множество экземпляров еще одного клипа. только вот я хочу, чтобы эти экземпляры находились ПОД тем другим слоем (LayerN1). как это сделать? методы Flash MX не предлагать :)
зы
похоже я позорю своими сообщениями этот топик...
Nox Noctis
11.07.2002, 18:55
2greyshaman
насчет зачистки - зачем аттач, когда createEmptyMovieClip работает мгновенно (в отличие от аттача) :))
типа
this.createEmptyMovieClip("temp", any_clip.getDepth());
temp.removeMovieClip();
и все киляется :))
2blackhund
в пятерке есть один-единственный способ:
все дубликаты делаешь _внутри_ какого-то клипа... и если их нужно все сразу подсунуть под что-то, то просто делаешь swapDepths общего клипа с этим чем-то :))
правда по отдельности свопнуть дубликаты с чем-то _вне_ этого внешнего клипа - невозможно...
greyshaman
11.07.2002, 19:05
2 Nox Метод не срабатывает на графике (полная зачистка ;) ).
в отличии от
duplicateMovieClip EmptyMovieClip
и attachMovie
Nox Noctis
11.07.2002, 19:27
2greyshaman
"на графике" - это в смысле без мувиклипов вообще ?
свободная от мувиклипов графика убивается при
_root.createEmptyMovieClip("", -16383);
так что нет никакой разницы... ;))
DeliMIter
11.07.2002, 19:48
А знаете ли вы, что
createEmptyMovieClip
attachMovie (?) - не тестировал
duplicateMovieClip
хотя про них и написано в хелпе
Returns
Nothing
но на самом деле возвращают ссылку на результат своей работы (если они и хотель сделать ретурн насынг, то это ассемблерный баг), соответственно
createEmptyMovieClip("Clip", 0)._x = 50;
делает именно то, что вы подумали?
Nox Noctis
11.07.2002, 20:03
вообще это слегка не по теме конечно...
но это известная фича :)) хэлп дырявый :) даже с эрратой...
в коде часто можно увидеть что-т типа:
a = this.createEmptyMovieClip(....);
кстати, объект мувиклип - далеко не единственный, где ретурн не прописан, но действует: к примеру методы addListener всех объектов возвращают true когда установят лисенер :) но ни в хелпе ни в эррате к хелпу об этом ни слова :))
greyshaman
12.07.2002, 10:58
Вернемся к теме. Про индексирование +2, это вы загнули, не сходится, просто ++.
Nox Noctis
12.07.2002, 14:07
если просто создать клип, сделать кучу его дубликатов (Ctrl+D) а потом прогнать
for (i in _root) {
if (_root[i] instanceof MovieClip) {
trace(_root[i]+" :: "+_root[i].getDepth());
}
}
то порядок идет именно +2
видимо такой порядок может нарушиться при каких-то операциях... мне влом экспериментировать если честно :))
УильямБрэдберри
14.07.2002, 19:07
Оригинал написал(а) DeliMIter
В хелпе макромедия ведет пропаганду за то, чтобы аттачить и дупликэйтить клипы на такие глубины как 0, 1, и тэдэ.
:)
Дело в том, что такая полезная штука, как removeMovieClip()
работает исключительно с положительными левелами.
-16384 - у нас _level root-а.
и если ты зааттачил или же создал клип в _level < 0
то просто так ты его не ремувнёшь.
отсюда же вытекает забавная фича - можно ремувить любой мувик, задав ему _level > 0 с помощью "swapDepths([_level > 0]);"
Nox Noctis
15.07.2002, 16:48
Оригинал написал(а) УильямБрэдберри
Дело в том, что такая полезная штука, как removeMovieClip()
работает исключительно с положительными левелами.зато unloadMovie работает с любыми левелами :))
и поясни насчет "swapDepths([_level > 0]);" :) че-то я не понял в чем пепс :)
swapDepths(_level>=-16384) работает нормально, а при _level<-16384 просто не работает, но ничего при этом не ремувит...
Nox Noctis
16.07.2002, 20:57
-16384.....
....глубина, глубина, я не твой. отпусти меня, глубина...
:)))))))))))))
Всё же не понял, что там с графикой? Как с ней связана глубина -16383?
2УильямБрэдберри
отсюда же вытекает забавная фича - можно ремувить любой мувик, задав ему _level > 0 с помощью "swapDepths([_level > 0]);"
А как же баг swapDepths при взаиможействии с "ручными" клипами? Ведь делая swapDepths, мы имеем 2 клипа...
Nox Noctis
07.08.2003, 17:30
Оригинал написал(а) metton
мы имеем 2 клипа... минздрав предупреждает... :))
и вообще - то был частный случай :)
если свапишь не-динамический клип, он начинает действовать как динамический... т.е. не удаляется при переходе по таймлайну. вот и все.
2Nox Noctis
если свапишь не-динамический клип, он начинает действовать как динамический... т.е. не удаляется при переходе по таймлайну. вот и все.
Не понял... А когда же удаляется динамический?
А что с графикой? (см. мой прдыдущий пост)
greyshaman
08.08.2003, 14:42
Точно точно ИЗВРАТ.
Когда вектора рисуютя прямо в слое, они что естественно, имеют глубину слоя, на слой понятие чет-нечет не распространяется.
2greyshaman
Это ты кому?! :confused:
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.