Temat: rozpoczecie animacji od okreslonej klatki
mam nadzieję, że nie zastosowałeś tego preloadera, który kolega zaproponował ?
Po pierwsze: nie uwzględnia on "stanu nieodgadnionego", który czasami zdarza się przy ładowaniu swfów - tj. getBytesLoaded jest większy od getBytesTotal, przy czym getBytesTotal nie wskazuje właściwej wielkości klipu, a jakieś "śmieci", dlatego dodaje się dodatkowy warunek - całość powinna wyglądać tak:
var playmovie = true;
//lub:
//var playmovie = false; gdy ma być wykonane gotoAndStop
//
var targetFrame = 4;
function myLoader (_mc:MovieClip) {
//
var gL = _mc.getBytesLoaded ();
var gB = _mc.getBytesTotal ();
//
if ((gL >= gB) && (gB > 123))
{
if (playmovie) {
_mc.gotoAndPlay (targetframe);
} else {
_mc.gotoAndStop (targetframe);
}
delete this.onEnterFrame;
}
else
{
//dla wizualizacji
conter_percent.text = int (100 * gL / gB);
}
}
this.onEnterFrame = function () {
myLoader (this);
};
Po drugie: jeżeli Twoja animacja nie jest na _root'cie (LUDZIE!!! kiedy oduczycie się stosować tego słowa we własnych projektach!!! Co zwraca _root, gdy się zrobi
trace(_root); - co ? chyba nie "_root" tylko określony poziom, prawda ?) to loader nie zadziała, ponieważ wszystko, cokolwiek jest w pierwszej klatce (np. embedowane fonty, obiekty biblioteczne itp.) będzie ładowane, zanim zainicjuje się skrypt zawarty w pierwszej klatce - dlatego też mamy tyle swfów, w którym loadery zaczynają się od 70% i więcej.
W moim skrypcie zakładając, że znajduje się on z klipem ładowanym w klatce innej niż pierwsza klatka _level0 (a więc właściwszy odpowiednik _root'a) wystarczy zmienić zawartość onEnterFrame na taką:
this.onEnterFrame = function () {
myLoader (this.movieClipInstanceName);
};
gdzie
movieClipInstanceName to nazwa nadana klipowi z animacją w polu instanceName zakładki
properties - by załadowany klip był obsłużony od razu podczas ładowania.
...a poza tym, to od dwóch wersji flasha mamy coś cudownego, co się nazywa MovieClipLoader i praktycznie rzecz biorąc wszystko co podałem powyżej załatwia za nas - wystarczy tylko nauczyć się przykładów zawartych w helpie flasha.
MaW Marcin W. edytował(a) ten post dnia 15.06.08 o godzinie 16:25