Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.02.2010, 13:15
gegemon81 вне форума Посмотреть профиль Отправить личное сообщение для gegemon81 Найти все сообщения от gegemon81
  № 1  
Ответить с цитированием
gegemon81

Регистрация: Jan 2010
Сообщений: 8
По умолчанию Уровни в as2

Такой вопрос у меня есть два объекта они крутятся по оси создавая эфект перспективы. И в отдалении уменьшаются. Как сделать так что бы тот что уменьшился сместился на слой вниз(опустился на уровень ниже) а потом при прохождении ...._Y=200; наоборот поднялся на уровень вверх?
Прошу вопрос очень важный нужен если исходник я выложу.

Старый 04.02.2010, 13:30
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
swapDepths

Старый 04.02.2010, 13:33
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 3  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Слоев, которые используются при разработке, в самих роликах уже нет, а вот глубины (Z-индекс) - есть.
Для их смены используется метод swapDepths.
Если нужно поменять мувики глубинами между собой:
Код AS1/AS2:
mc1.swapDepths (mc2);
Можно задать нужную глубину руками:
Код AS1/AS2:
mc1.swapDepths (10);
Только при всех этих операциях надо иметь ввиду, что мувики, созданные в авторской среде, имеют отрицательные глубины, а те, которые создаются программно - от 0 и выше.
Так задумано, чтобы не было конфликтов.

Старый 04.02.2010, 17:46
gegemon81 вне форума Посмотреть профиль Отправить личное сообщение для gegemon81 Найти все сообщения от gegemon81
  № 4  
Ответить с цитированием
gegemon81

Регистрация: Jan 2010
Сообщений: 8
Не работает. Прикладываю исходник.
Подскажите где ошибка?

Старый 04.02.2010, 17:49
gegemon81 вне форума Посмотреть профиль Отправить личное сообщение для gegemon81 Найти все сообщения от gegemon81
  № 5  
Ответить с цитированием
gegemon81

Регистрация: Jan 2010
Сообщений: 8
Исходник
Вложения
Тип файла: rar вопрос об уровнях.rar (4.1 Кб, 41 просмотров)

Старый 04.02.2010, 18:40
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Нужно сменить глубины и ждать до следующего нужного момента, а у вас непрерывно идет swapDepths.
В общем, в логике ваших передвижений я не стал разбираться, но решение есть:
берем за основу постулат о том, что объект, который больше в вашем проекте, должен заслонять более маленький, т.е. удаленный в перспективе.
Поэтому признаком смены глубин будет момент, когда _xscale, одного будет больше, чем _xscale другого.
Кроме того, нужно ввести триггер того, что смена произошла, чтобы не теребить непрерывно swapDepths.
И еще заранее определим свободные уровни. У вас ведь изначальный аттач происходит на уровни 1 и 2, они заняты, поэтому, во избежание, используем getNextHighestDepth();
Таким образом, получаем код:

Код AS1/AS2:
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 ;			
	}
 
//.... тут ваша анимация и изменение масштабирования мувиков
 
}
Код избыточен, можно попробовать сделать и одной проверкой, но сейчас не соображу.


Последний раз редактировалось mooncar; 05.02.2010 в 16:46.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:40.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
уровень слои

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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