![]() |
|
||||||||||
|
|||||
|
[+2 07.04.09]
Регистрация: Feb 2009
Сообщений: 70
|
как сделать чтоб при нажатии кнопки меню, играла анимация закрытия текущей страницы и только после этого играла анимация открытия следующей страницы?
пыталась переделать свой вариант с as2 на as3 но безрезультатно. ![]() если у кого нибуть есть пример буду благодарна ![]() |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 669
|
Нажали на кнопку -> проигрываем анимацию закрытия -> закончилась анимация -> проигрываем анимацию открытия.
Как спросили так и ответили. Более конкретные ответы при более конкретных вопросах |
|
|||||
|
[+2 07.04.09]
Регистрация: Feb 2009
Сообщений: 70
|
вот код
//---- добавляем кнопки к массиву -------- var buttonsArray:Array = [vampiro_btn,news_btn,gallery_btn,media_btn,music_btn,forum_btn,gratitude_btn,aboutus_btn,contacts_btn]; stop(); //----цикл в массиве buttonsArray----- //----установим некоторые свойства и добавим события кнопкам---- function setButtons():void { for (var i:int=0; i<buttonsArray.length; i++) { buttonsArray[i].id = i; buttonsArray[i].buttonMode = true; buttonsArray[i].mouseChildren = false; buttonsArray[i].mouseEnabled = true; buttonsArray[i].addEventListener(MouseEvent.ROLL_OVER,playOver); buttonsArray[i].addEventListener(MouseEvent.ROLL_OUT,playOut); buttonsArray[i].addEventListener(MouseEvent.CLICK,doClick); } } //----выполняется, когда мышь наводится над кнопкой---- function playOver(event:MouseEvent):void { event.currentTarget.gotoAndPlay("over"); } //----выполняется, когда мышь уходит с кнопки---- function playOut(event:MouseEvent):void { event.currentTarget.gotoAndPlay("out"); } //----выполняется, когда мышь кликает кнопку----- function doClick(event:MouseEvent):void{ //----установим переменную currentBtn равную----- //----идентификатору кнопки (id) , которая была кликнута----- var currentBtn:int = event.currentTarget.id; //----вызываем функцию setSelectedBtn setSelectedBtn(currentBtn); } /*проверим, какая кнопка была кликнута, если id , переданная в функцию setSelectedBtn, идентична id кликнутой кнопки мы полагаем, что кнопки находятся в положении нажатой down (выделенная) и удаляем все события, добавленные к ней*/ function setSelectedBtn(id:int):void{ for (var i:int=0; i< buttonsArray.length; i++) { if (id == i) { buttonsArray[i].gotoAndStop("down"); buttonsArray[i].buttonMode = false; buttonsArray[i].mouseEnabled = false; buttonsArray[i].removeEventListener(MouseEvent.ROLL_OVER,playOver); buttonsArray[i].removeEventListener(MouseEvent.ROLL_OUT,playOut); buttonsArray[i].removeEventListener(MouseEvent.CLICK,doClick); switch(id){ case 0: gotoAndPlay(2); break; case 1: gotoAndPlay(41); break; case 2: navigateToURL(new URLRequest("http://youtube.com"),"_blank"); break; default: trace("ups, something it's wrong"); break; } } else { if(buttonsArray[i].currentLabel =="down"){ buttonsArray[i].gotoAndPlay("out"); } buttonsArray[i].buttonMode = true; buttonsArray[i].mouseEnabled = true; buttonsArray[i].addEventListener(MouseEvent.ROLL_OVER,playOver); buttonsArray[i].addEventListener(MouseEvent.ROLL_OUT,playOut); buttonsArray[i].addEventListener(MouseEvent.CLICK,doClick); } } } //----вызываем функцию setButtons ---- setButtons(); в as2 я использовала такой код i = 2; iold = 2; _root.container.cont2.menu.p1.onRelease = function() { if (iold == 0) { _root.container.cont2.menu.p1.gotoAndPlay(31); _root.container.cont1.menu.gotoAndPlay(2); } else if (iold == 2) { _root.container.cont2.p2.gotoAndPlay(30); _root.container.cont2.gotoAndPlay(31); } else if (iold == 3) { _root.container.cont2.menu.p3.gotoAndPlay(30); _root.container.cont3.gotoAndPlay(31); } else if (iold == 4) { _root.container.cont2.menu.p4.gotoAndPlay(30); _root.container.cont4.gotoAndPlay(31); } else if (iold == 5) { _root.container.cont2.menu.p5.gotoAndPlay(30); _root.container.cont5.gotoAndPlay(31); } else if (iold == 6) { _root.container.cont2.menu.p6.gotoAndPlay(30); _root.container.cont2.gotoAndPlay(31); } iold = 1; i = 1; } _root.container.cont2.p2.onRelease = function() { if (iold == 0) { _root.container.cont2.p2.gotoAndPlay(31); _root.container.cont2.gotoAndPlay(2); } else if (iold == 1) { _root.container.cont2.menu.p1.gotoAndPlay(30); _root.container.cont1.gotoAndPlay(31); } else if (iold == 3) { _root.container.cont2.menu.p3.gotoAndPlay(30); _root.container.cont3.gotoAndPlay(31); } else if (iold == 4) { _root.container.cont2.menu.p4.gotoAndPlay(30); _root.container.cont4.gotoAndPlay(31); } else if (iold == 5) { _root.container.cont2.menu.p5.gotoAndPlay(30); _root.container.cont5.gotoAndPlay(31); } else if (iold == 6) { _root.container.cont2.menu.p6.gotoAndPlay(30); _root.container.cont2.gotoAndPlay(31); } iold = 2; i = 2; } _root.container.cont2.menu.p3.onRelease = function() { if (iold == 0) { _root.container.cont2.menu.p3.gotoAndPlay(31); _root.container.cont3.gotoAndPlay(2); } else if (iold == 1) { _root.container.cont2.menu.p1.gotoAndPlay(30); _root.container.cont1.gotoAndPlay(31); } else if (iold == 2) { _root.container.cont2.p2.gotoAndPlay(30); _root.container.cont2.gotoAndPlay(31); } else if (iold == 4) { _root.container.cont2.menu.p4.gotoAndPlay(30); _root.container.cont4.gotoAndPlay(31); } else if (iold == 5) { _root.container.cont2.menu.p5.gotoAndPlay(30); _root.container.cont5.gotoAndPlay(31); } else if (iold == 6) { _root.container.cont2.menu.p6.gotoAndPlay(30); _root.container.cont2.gotoAndPlay(31); } iold = 3; i = 3; } _root.container.cont2.menu.p4.onRelease = function() { if (iold == 0) { _root.container.cont2.menu.p4.gotoAndPlay(31); _root.container.cont4.gotoAndPlay(2); } else if (iold == 1) { _root.container.cont2.menu.p1.gotoAndPlay(30); _root.container.cont1.gotoAndPlay(31); } else if (iold == 2) { _root.container.cont2.p2.gotoAndPlay(30); _root.container.cont2.gotoAndPlay(31); } else if (iold == 3) { _root.container.cont2.menu.p3.gotoAndPlay(30); _root.container.cont3.gotoAndPlay(31); } else if (iold == 5) { _root.container.cont2.menu.p5.gotoAndPlay(30); _root.container.cont5.gotoAndPlay(31); } else if (iold == 6) { _root.container.cont2.menu.p6.gotoAndPlay(30); _root.container.cont2.gotoAndPlay(31); } iold = 4; i = 4; } _root.container.cont2.menu.p5.onRelease = function() { if (iold == 0) { _root.container.cont2.menu.p5.gotoAndPlay(31); _root.container.cont5.gotoAndPlay(2); } else if (iold == 1) { _root.container.cont2.menu.p1.gotoAndPlay(30); _root.container.cont1.gotoAndPlay(31); } else if (iold == 2) { _root.container.cont2.p2.gotoAndPlay(30); _root.container.cont2.gotoAndPlay(31); } else if (iold == 3) { _root.container.cont2.menu.p3.gotoAndPlay(30); _root.container.cont3.gotoAndPlay(31); } else if (iold == 4) { _root.container.cont2.menu.p4.gotoAndPlay(30); _root.container.cont4.gotoAndPlay(31); } else if (iold == 6) { _root.container.cont2.menu.p6.gotoAndPlay(30); _root.container.cont2.gotoAndPlay(31); } iold = 5; i = 5; } _root.container.cont2.menu.p6.onRelease = function() { if (iold == 0) { _root.container.cont2.menu.p6.gotoAndPlay(31); _root.container.cont6.gotoAndPlay(2); } else if (iold == 1) { _root.container.cont2.menu.p1.gotoAndPlay(30); _root.container.cont1.gotoAndPlay(31); } else if (iold == 2) { _root.container.cont2.p2.gotoAndPlay(30); _root.container.cont2.gotoAndPlay(31); } else if (iold == 3) { _root.container.cont2.menu.p3.gotoAndPlay(30); _root.container.cont3.gotoAndPlay(31); } else if (iold == 4) { _root.container.cont2.menu.p4.gotoAndPlay(30); _root.container.cont4.gotoAndPlay(31); } else if (iold == 5) { _root.container.cont2.menu.p5.gotoAndPlay(30); _root.container.cont5.gotoAndPlay(31); } iold = 6; i = 6; } знаю что туплю, но очень сложно сосредаточится в чем проблема |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 669
|
Цитата:
Не надо создавать кадры на главном таймлайне и уж тем более обращаться к его фрагментам по номеру - добавите один кадр анимации куда-нибудь и вся навигация сбилась. Обзывайте кадры 'mainPageOpen', 'mainPageClose', 'contactsPageOpen' и т.д. В эти же кадры добавьте диспетчирезацию соответствующих событий 'animOpenFinish', 'animCloseFinish'. Потом примерно так var mcPagesChangeAnimation:MovieClip = клип, содержащий анимации открытия/закрытия страниц; mcPagesChangeAnimation.addEventListener('animOpenFinish', animOpenFinishHandler); mcPagesChangeAnimation.addEventListener('animCloseFinish', animCloseFinishHandler); var currentPage:String = 'somePage'; var selectedButton:MovieClip = кнопка, нажатая по умолчанию при открытии swf, а в последствии - нажатая кнопка; function setSelectedBtn(id:int):void { selectedButton.mouseEnabled = true; selectedButton = buttonsArray[id]; selectedButton.mouseEnabled = false; switch(id) { case 0: mcPagesChangeAnimation.gotoAndPlay(currentPage + 'Close'); currentPage = 'someOtherPage'; break; case 1: ... break; case 2: navigateToURL(new URLRequest("http://youtube.com"),"_blank"); break; default: trace("Oops, something is wrong!"); } } function animOpenFinishHandler(event:Event):void { // Какие-то действия, инициализирующие страницу } function animCloseFinishHandler(event:Event):void { mcPagesChangeAnimation.gotoAndPlay(currentPage + 'Open'); } |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:14. |
|
|
« Предыдущая тема | Следующая тема » |
|
|