Просмотр полной версии : Уровни в as2
gegemon81
04.02.2010, 13:15
Такой вопрос у меня есть два объекта они крутятся по оси создавая эфект перспективы. И в отдалении уменьшаются. Как сделать так что бы тот что уменьшился сместился на слой вниз(опустился на уровень ниже) а потом при прохождении ...._Y=200; наоборот поднялся на уровень вверх?
Прошу вопрос очень важный нужен если исходник я выложу.
Psycho Tiger
04.02.2010, 13:30
swapDepths
Слоев, которые используются при разработке, в самих роликах уже нет, а вот глубины (Z-индекс) - есть.
Для их смены используется метод swapDepths.
Если нужно поменять мувики глубинами между собой:
mc1.swapDepths (mc2);
Можно задать нужную глубину руками:
mc1.swapDepths (10);
Только при всех этих операциях надо иметь ввиду, что мувики, созданные в авторской среде, имеют отрицательные глубины, а те, которые создаются программно - от 0 и выше.
Так задумано, чтобы не было конфликтов.
gegemon81
04.02.2010, 17:46
Не работает. Прикладываю исходник.
Подскажите где ошибка?
gegemon81
04.02.2010, 17:49
Исходник
Нужно сменить глубины и ждать до следующего нужного момента, а у вас непрерывно идет swapDepths.
В общем, в логике ваших передвижений я не стал разбираться, но решение есть:
берем за основу постулат о том, что объект, который больше в вашем проекте, должен заслонять более маленький, т.е. удаленный в перспективе.
Поэтому признаком смены глубин будет момент, когда _xscale, одного будет больше, чем _xscale другого.
Кроме того, нужно ввести триггер того, что смена произошла, чтобы не теребить непрерывно swapDepths.
И еще заранее определим свободные уровни. У вас ведь изначальный аттач происходит на уровни 1 и 2, они заняты, поэтому, во избежание, используем getNextHighestDepth();
Таким образом, получаем код:
var backLevel:Number = this.getNextHighestDepth();
var frontLevel:Number = backLevel + 1;
wasSwaped_1 = false ;// признаки смены глубин
wasSwaped_2 = false ;// признаки смены глубин
_root.onEnterFrame = function() {
if (mw._xscale > mw2._xscale && !wasSwaped_1) {
mw.swapDepths(frontLevel); //выходит вперед
mw2.swapDepths(backLevel);//уходит назад
wasSwaped_1 = true ;
wasSwaped_2 = false ;
}
if (mw._xscale < mw2._xscale && !wasSwaped_2) {
mw.swapDepths(frontLevel);
mw2.swapDepths(backLevel);
wasSwaped_2 = true ;
wasSwaped_1 = false ;
}
//.... тут ваша анимация и изменение масштабирования мувиков
}
Код избыточен, можно попробовать сделать и одной проверкой, но сейчас не соображу.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.