![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 66
|
Здравствуйте, столкнулась с таким вопросом:
Есть сцена, внутри которой на 1 кадре лежит меню, которое выдвигается в 3 приема (закрыто, открыто наполовину, открыто полностью). Однако оно у меня не выдвигается плавно, а просто меняет координату, поэтому выглядит как скачки. Подскажите пожалуйста как реализовать плавное "выезжание" и обратное "возвращение" програмно? Пока живу с таким кодом. //Слушаем события мыши 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); } |
|
|||||
|
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
создаешь событие EnterFrame и в слушателе пишешь что-то в этом роде:
menu.y++//либо menu.y+=2...........n if (menu.y ==1000) removeEventListener(Event.ENTER_FRAME, onFRame) Либо пользуся твинами и ТвинЛайтом |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 66
|
Большое спасибо))
|
|
|||||
|
Регистрация: Oct 2009
Сообщений: 50
|
А что вам мешает воспользоваться твинером? Хотя бы стандартным fl.transitions.Tween?
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 66
|
Попробовала сегодня с утра вставить эти строчки. И что-то работает, только если я в 1 сторону это движение использую, например на задвигание меню, а если я хочу и выдвигать и прятать плавно - вообще ничего не происходит). Подскажите пожалуйста еще раз где накосячила:
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, время: 12:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|