Jak dynamicznie dodać zdjęcia do klipu flashowego…?

Na ładowanie obrazków, czy innych klipów flashowych z innych katalogów są przynajmniej dwie metody…
Pierwsza, banalnie prosta to proste użycie loadMovie() i może od niej właśnie zacznę…Metoda loadMovie(), najkrócej ujmując ładuje zewnętrzny plik którym może być obraz, dźwięk, swf inny format video…
Jego użycie wygląda następująco:

baseClip.loadMovie(url:String):Void

Jak widać, jako taka metoda niczego nie zwraca (:Void),

Konkretny przykład? Poniżej…

var naszObrazek = "/fotki/wakacje/img_00001.png";
_root.sciezka.do.naszego.kontenera.loadMovie("img/" +naszObrazek);

I po kłopocie… Po przekompilowaniu pliku i uruchomieniu filmu w przeglądarce zdjęcie o ile istnieje w katalogu pojawi się nam w odpowiednim miejscu…

Można powiedzieć że wszystko pięknie… ale klient przypomniał mi że zdjęcia jakie ładować się ma we wskazanym miejscu może mieć różną wielkość, wówczas przyklejać się będzie do lewego górnego rogu przez co animacja straci na atrakcyjności…

Wykonanie takiej zmiany za pomocą loadMovie wydało mi się kiepskim pomysłem i skorzystałem z rozwiązanie dającego większe możliwości. Chodzi mi konkretnie o klasę MovieClipLoader…

Cały program obsługujący zaciąganie fotki i jej centowanie wygląda mniej więcej tak…

var url_obrazek:String = _root.adres_obrazka.text;
var contentBox = _root.img_contener_box.contener;
var contentBoxNextFree = contentBox.getNextHighestDepth();
var imgEmptyMovieClip = contentBox.createEmptyMovieClip("myIMG", + contentBoxNextFree, contentBoxNextFree);
var myIMGOnLoadHandler:Object = new Object();
    myIMGOnLoadHandler.onLoadInit = function(clip_mc:MovieClip){
        trace("Załadowano");
        var contenerBox = contentBox.img_contener_box;
        szczerokoscObrazka = contentBox._width;
        wysokoscObrazka = contentBox._height;
        var szczerokoscKontenera = 400;
        var wysokoscKontenera = 400;
        contentBox._x = szczerokoscObrazka/2 -szczerokoscObrazka;
        contentBox._y = wysokoscObrazka/2 - wysokoscObrazka;
        }

    var mcLoader:MovieClipLoader = new MovieClipLoader();
    mcLoader.addListener(myIMGOnLoadHandler);
    mcLoader.loadClip("img/" +url_obrazek, imgEmptyMovieClip);

Ogólnie mówiąc, klasa MovieClipLoader umożliwia łatwe wyzwalanie zdarzeń po ukończeniu np. ładowania obrazka :)

 

Leave a Reply