Wymuszenie przejścia do konkretnej klatki jest prostą operacją. Wywołanie metody
gotoAndPlay()
albo
gotoAndStop()
powoduje przeskok do klatki o numerze podanym jako parametr. Można też jako parametr przekazać ciąg znaków równy etykiecie klatki. Każdej klatce na osi czasu można przypisać etykietę. W tym celu należy zaznaczyć klatkę na osi czasu i wprowadzić nazwę w polu Etykieta klatki w Inspektorze właściwości.
Zalety korzystania z etykiet klatek zamiast ich numerów ujawniają się zwłaszcza w skomplikowanych klipach filmowych. Operując na dużej liczbie klatek, warstw i animacji, warto nadać ważnym klatkom czytelne etykiety odzwierciedlające zmiany w zachowaniu klipu filmowego (np. „start”, „idzie” lub „biegnie”). Zwiększa to czytelność kodu i jego elastyczność, ponieważ kod ActionScript odwołujący się do etykiety nie zawiera wpisanego wprost numeru klatki. Gdy w przyszłości zdecydujemy się przenieść dany segment animacji do innej klatki, nie trzeba będzie zmieniać kodu ActionScript, o ile tylko w nowym miejscu analogiczne klatki będą miały te same etykiety, co dotychczas.
W języku ActionScript 3.0 dostępna jest klasa FrameLabel reprezentująca etykiety klas. Każda instancja tej klasy reprezentuje jedną etykietę klatki i ma właściwość
name
zawierającą etykietę podaną w Inspektorze właściwości oraz właściwość
frame
reprezentującą numer klatki, której ta etykieta jest przypisana.
Aby umożliwić dostęp do instancji klasy FrameLabel powiązanych z instancją klipu filmowego, w klasie MovieClip przewidziano dwie właściwości, które bezpośrednio zwracają obiekty typu FrameLabel. Właściwość
currentLabels
zwraca tablicę zawierającą wszystkie obiekty FrameLabel z całej osi czasu klipu filmowego. Właściwość
currentLabel
zwraca ciąg znaków zawierający etykietę ostatnio napotkaną na osi czasu.
Załóżmy, że mamy utworzony klip filmowy o nazwie
robot
, a różne stany animacji robota są opatrzone etykietami. Możemy sformułować warunek sprawdzający wartość właściwości
currentLabel
w celu określenia bieżącego stanu klipu
robot
, co ilustruje poniższy kod:
if (robot.currentLabel == "walking")
{
// do something
}
W programie Flash Player 11.3 i środowisku AIR 3.3 dodano zdarzenie
frameLabel
do klasy FrameLabel. Można przypisać moduł obsługi zdarzeń do wystąpienia klasy FrameLabel reprezentującego etykietę klatki. To zdarzenie jest wywoływane, gdy głowica odtwarzania wchodzi do klatki.
Poniższy przykładowy kod tworzy wystąpienie klasy FrameLabel dla etykiety drugiej klatki w tablicy etykiet klatek obiektu MovieClip. Następnie rejestruje moduł obsługi zdarzeń
frameLabel
.
var myFrameLabel:FrameLabel = robot.currentLabels[1];
myFrameLabel.addEventListener(Event.FRAME_LABEL, onFrameLabel);
function onFrameLabel(e:Event):void {
//do something
}