ActionScript 3.0 i zdarzenie ENTER_FRAME dla klipów (MovieClip) z jedną ramką (single-frame)

W AC3 występuje zdarzenie ENTER_FRAME, pod które można się podpiąć, gdy chcemy wykonywać określoną funkcję za każdym razem, gdy następuje wejście na kolejną ramkę. Przykładowy kod, który podpina nam anonimową funkcję do owego zdarzenia pokazany jest poniżej.

addEventListener( Event.ENTER_FRAME, function() {
	/*kod*/
});

Warte uwagi jest jest jednak inny mniej znany fakt powiązany z tym zdarzeniem. Zanim przejdę do meritum nadmienię jeszcze coś. Gdy animacja ma więcej niż jedną ramkę, to jest ona standardowo odtwarzana w nieskończonej pętli – gdy dochodzimy do końca, wszystkie zmienne są resetowane i animacja zaczyna się od nowa. Inaczej sprawa wygląda, gdy mamy tylko jedną ramkę. Wtedy odtwarzanie nie następuje w pętli, ale odtworzenie następuje tylko jednokrotnie. Nie jest to zachowanie przypadkowe – jednoramkowe animacje przeznaczone są do tworzenia spirtów, czyli fragmentów animacji.

I teraz przechodzimy do sedna sprawy. Dla animacji z jedną ramkę, mimo że animacja nie jest odtwarzana w pętli, to i tak generowane jest zdarzenie ENTER_FRAME z częstotliwością ustaloną w FPS. Jest to o tyle wszystko fajnie zrobione, że możemy podpiąć się pod te zdarzenie i animować nasz jedno-ramkowy MovieClip, a nasze zmienne nie będą się resetować, gdyż nie ma pętli. Wszystkie zmienne zainicjalizowane we Frame Action będą utrzymywać swój stan, a my będziemy mogli je modyfikować za pomocą podpięcia się pod wspomniane zdarzenie.