Использование временной шкалы обычно считается не лучшей практикой. Вы будете склонны находить дизайнеров, которые начинают программировать, как правило, часто используют временную шкалу, к которой они привыкли. Также у программистов, которые начинали с AS1 или AS2, обычно бывают вредные привычки. Если что-то стоит делать, то стоит делать правильно.
Проблема с использованием временной шкалы заключается в управлении состояниями переменных. Любые переменные, которые объявлены в кадре, будут потеряны, если вы затем перейдете к другому кадру (за исключением первого кадра). Для демонстрации представьте себе этот базовый пример:
На первом кадре есть кнопка настроек, которая при нажатии переходит к другому кадру «Опции». Этот фрейм параметров имеет кнопку проверки, а также объявляет другой объект. Также имеется кнопка для возврата в главное меню. Вот как это выглядит, когда компилятор сгенерировал его в код:
package DemoAvoid_fla
{
import fl.controls.*;
import flash.display.*;
import flash.events.*;
dynamic public class MainTimeline extends MovieClip
{
public var btnOptions:SimpleButton;
public var chkHints:CheckBox;
public var myWorld:Object;
public var btnReturnToMainMenu:SimpleButton;
public var declareSomeInstace:Object;
public function MainTimeline()
{
addFrameScript(0, this.frame1, 1, this.frame2);
return;
}// end function
public function onOptionsClick(event:MouseEvent) : void
{
gotoAndStop("options");
return;
}// end function
function frame1()
{
stop();
this.myWorld = new Object();
this.btnOptions.addEventListener(MouseEvent.CLICK, this.onOptionsClick);
return;
}// end function
public function onReturnToMainMenu(event:Event) : void
{
gotoAndStop("mainMenu");
return;
}// end function
function frame2()
{
stop();
this.chkHints.addEventListener(Event.CHANGE, this.onHintsChange);
this.btnReturnToMainMenu.addEventListene(MouseEvent.CLICK,this.onReturnToMainMenu);
this.declareSomeInstace = new Object();
return;
}// end function
public function onHintsChange(event:Event) : void
{
var _loc_2:* = event.target.selected;
trace(_loc_2);
return;
}// end function
}
}
Теперь вот в чем проблема. Если бы вам пришлось перейти на страницу параметров, а затем вернуться в главное меню, вы бы в конечном итоге сбросили состояние переменной, поскольку теперь вы создаете новый экземпляр моего мира (и использование памяти возрастает, поскольку сборщик мусора не будет мгновенным). Вы также потеряли свой экземпляр на странице настроек.
Мой стиль кодирования для меню заключается в создании каждого экрана как мувиклипа. Затем поместите каждый мувиклип в первый кадр, но на разные слои. Затем я скрываю / показываю слой, который хочу. Его также легко контролировать из внешних классов, и он так же быстр в разработке, что позволяет избежать любых ошибок, о которых я говорил:)