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

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

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

Регистрация: Feb 2009
Сообщений: 66
По умолчанию плавное изменение координаты объекта

Здравствуйте, столкнулась с таким вопросом:
Есть сцена, внутри которой на 1 кадре лежит меню, которое выдвигается в 3 приема (закрыто, открыто наполовину, открыто полностью). Однако оно у меня не выдвигается плавно, а просто меняет координату, поэтому выглядит как скачки. Подскажите пожалуйста как реализовать плавное "выезжание" и обратное "возвращение" програмно?

Пока живу с таким кодом.
Код AS3:
//Слушаем события мыши
PAGE.PAGE_BKG.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
MENU.btn_up.addEventListener(MouseEvent.MOUSE_DOWN, StartMenuDrag);
MENU.btn_up.addEventListener(MouseEvent.MOUSE_UP, StoptMenuDrag);
MENU.btn_down.addEventListener(MouseEvent.MOUSE_DOWN, StartMenuDrag);
MENU.btn_down.addEventListener(MouseEvent.MOUSE_UP, StoptMenuDrag);
MENU.btn_up.addEventListener(MouseEvent.CLICK,upClick);
MENU.btn_down.addEventListener(MouseEvent.CLICK,downClick);
PAGE.addEventListener(MouseEvent.CLICK,stageClick);
 
function stageClick (e:MouseEvent):void {
   MENU.y=1020;
   closed = true;
   half_opened = false;
   opened = false;
   MENU.btn_up.visible=true;
   MENU.btn_up_un.visible=false;}
 
//события по верхней кнопке
function upClick (e:MouseEvent):void {
if (closed){
   MENU.y=984;
   closed = false;
   half_opened = true;
   opened = false;
   MENU.btn_up.visible=true;
   MENU.btn_up_un.visible=false;}
 
else if (half_opened){
   MENU.y=788;
   closed = false;
   half_opened = false;
   opened = true;
   MENU.btn_up.visible=false;
   MENU.btn_up_un.visible=true;}
 
else if (opened) {
   closed = false;
   half_opened = false;
   opened = true;
   MENU.btn_up.visible=false;
   MENU.btn_up_un.visible=true;}
}
 
//события по нижней кнопке
function downClick (e:MouseEvent):void {
 
   if (half_opened){
   MENU.y=1020;
   closed = true;
   half_opened = false;
   opened = false;
   MENU.btn_up.visible=true;
   MENU.btn_up_un.visible=false;}
 
   else if (opened) {
   MENU.y=984;
   closed = false;
   half_opened = true;
   opened = false;
   MENU.btn_up.visible=true;
   MENU.btn_up_un.visible=false;}
 
   else if (closed){
   MENU.y=1020;
   closed = true;
   half_opened = false;
   opened = false;
   MENU.btn_up.visible=true;
   MENU.btn_up_un.visible=false;}
}
 
 
 
//Выдвигаем меню
function StartMenuDrag(event:MouseEvent):void
{	
	MENU.startDrag(false, new Rectangle(0,1020,0,-235));
 
}
//Закончили двигать
 
	function StoptMenuDrag(event:MouseEvent):void
{
	MENU.stopDrag();
	//var s:int = MENU.y;
	//trace(s);
 
}

Старый 06.05.2011, 01:33
DZHETIGAPA вне форума Посмотреть профиль Отправить личное сообщение для DZHETIGAPA Найти все сообщения от DZHETIGAPA
  № 2  
Ответить с цитированием
DZHETIGAPA
[+3 18.04.11]

Регистрация: Dec 2010
Сообщений: 342
создаешь событие EnterFrame и в слушателе пишешь что-то в этом роде:
Код AS3:
menu.y++//либо menu.y+=2...........n
if (menu.y ==1000) removeEventListener(Event.ENTER_FRAME, onFRame)
Думаю смысл ты поняла.

Либо пользуся твинами и ТвинЛайтом

Старый 06.05.2011, 02:10
Ossikuro вне форума Посмотреть профиль Отправить личное сообщение для Ossikuro Найти все сообщения от Ossikuro
  № 3  
Ответить с цитированием
Ossikuro
 
Аватар для Ossikuro

Регистрация: Feb 2009
Сообщений: 66
Большое спасибо))

Старый 06.05.2011, 10:53
woland24 вне форума Посмотреть профиль Отправить личное сообщение для woland24 Найти все сообщения от woland24
  № 4  
Ответить с цитированием
woland24

Регистрация: Oct 2009
Сообщений: 50
А что вам мешает воспользоваться твинером? Хотя бы стандартным fl.transitions.Tween?

Старый 06.05.2011, 10:55
Ossikuro вне форума Посмотреть профиль Отправить личное сообщение для Ossikuro Найти все сообщения от Ossikuro
  № 5  
Ответить с цитированием
Ossikuro
 
Аватар для Ossikuro

Регистрация: Feb 2009
Сообщений: 66
Попробовала сегодня с утра вставить эти строчки. И что-то работает, только если я в 1 сторону это движение использую, например на задвигание меню, а если я хочу и выдвигать и прятать плавно - вообще ничего не происходит). Подскажите пожалуйста еще раз где накосячила:
Код AS3:
PAGE.PAGE_BKG.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
MENU.btn_up.addEventListener(MouseEvent.MOUSE_DOWN, StartMenuDrag);
MENU.btn_up.addEventListener(MouseEvent.MOUSE_UP, StoptMenuDrag);
MENU.btn_down.addEventListener(MouseEvent.MOUSE_DOWN, StartMenuDrag);
MENU.btn_down.addEventListener(MouseEvent.MOUSE_UP, StoptMenuDrag);
MENU.btn_up.addEventListener(MouseEvent.CLICK,upClick);
//MENU.btn_down.addEventListener(MouseEvent.CLICK,downClick);
PAGE.addEventListener(MouseEvent.CLICK,stageClick);
 
function slideback (e:Event):void{
	MENU.y+=10;
	if (MENU.y==1020||MENU.y>1020){
		 stage.removeEventListener(Event.ENTER_FRAME,slideback);
		 MENU.y=1020;
	}
}
 
function slideon(e:Event):void{
	MENU.y-=10;
	if (MENU.y==984||MENU.y>984&&MENU.y<788&&half_opened){
	stage.removeEventListener(Event.ENTER_FRAME,slideon);
	MENU.y=984;}
	else if (MENU.y==788||MENU.y<788&&opened){
	stage.removeEventListener(Event.ENTER_FRAME,slideon);
	MENU.y=788;
	}
}
 
function stageClick (e:MouseEvent):void {
   stage.addEventListener(Event.ENTER_FRAME,slideback);
   //MENU.y=1020;
   closed = true;
   half_opened = false;
   opened = false;
   MENU.btn_up.visible=true;
   MENU.btn_up_un.visible=false;}
 
//события по верхней кнопке
function upClick (e:MouseEvent):void {
if (closed){
   stage.addEventListener(Event.ENTER_FRAME, slideon);
   closed = false;
   half_opened = true;
   opened = false;
   MENU.btn_up.visible=true;
   MENU.btn_up_un.visible=false;}
 
else if (half_opened){
   stage.addEventListener(Event.ENTER_FRAME, slideon);
   closed = false;
   half_opened = false;
   opened = true;
   MENU.btn_up.visible=false;
   MENU.btn_up_un.visible=true;}
 
else if (opened) {
   closed = false;
   half_opened = false;
   opened = true;
   MENU.btn_up.visible=false;
   MENU.btn_up_un.visible=true;}
}

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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