Цитата:
 Код 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');
}