Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   переход по страницам (http://www.flasher.ru/forum/showthread.php?t=126226)

droch_fhoula 14.06.2009 18:28

переход по страницам
 
как сделать чтоб при нажатии кнопки меню, играла анимация закрытия текущей страницы и только после этого играла анимация открытия следующей страницы?
пыталась переделать свой вариант с as2 на as3 но безрезультатно.:wacko:
если у кого нибуть есть пример буду благодарна:)

Kuruki 14.06.2009 23:46

Нажали на кнопку -> проигрываем анимацию закрытия -> закончилась анимация -> проигрываем анимацию открытия.

Как спросили так и ответили. Более конкретные ответы при более конкретных вопросах

droch_fhoula 15.06.2009 00:16

вот код
Код AS3:

//---- добавляем кнопки к массиву --------
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 я использовала такой код
Код AS1/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;
}

делала нечто подобное на as3 но реакции на нажатие кнопки нет.
знаю что туплю, но очень сложно сосредаточится в чем проблема

Kuruki 15.06.2009 05:23

Цитата:

Код AS3:

function setButtons():void {
 for (var i:int=0; i<buttonsArray.length; i++) {
  buttonsArray[i].id = i; // Класс, описывающий кнопки имеет переменную id?
  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);
 }
}


Далее.
Не надо создавать кадры на главном таймлайне и уж тем более обращаться к его фрагментам по номеру - добавите один кадр анимации
куда-нибудь и вся навигация сбилась. Обзывайте кадры 'mainPageOpen', 'mainPageClose', 'contactsPageOpen' и т.д.
В эти же кадры добавьте диспетчирезацию соответствующих событий 'animOpenFinish', 'animCloseFinish'.

Потом примерно так
Код AS3:

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, время: 00:46.

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