Krzysztof Michalak

Krzysztof Michalak Front-end / Drupal

Temat: [as 3.0] dynamiczna galeria problem z preloaderami

Witam:)

Tworzę galerię w as 3, zdjęcia ładowane z XML-a, w skrócie: poszczególne zdjęcia są dodawane do klipów, i rozmieszczane na scenie, mam taka funkcje:

function preloader(e:ProgressEvent):void
{
var perc:Number = e.bytesLoaded / e.bytesTotal;
var s:String = Math.ceil(perc*100).toString()+"%";

}

do ładowania klipów używam obiektu klasy loader do którego dodaje listenery:

l.contentLoaderInfo.addEventListener(Event.COMPLETE, preloader_usun);
l.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, preloader);

wszystko działa poprawnie (mogę sobie (wy)traceować;P )ale nie wiem jak zrobić/przekazać info o procentowym postępie w ładowaniu danego zdjęcia które obliczam w funkcji preloader do jakiejś animacji która będzie preloaderem do danego zdjęcia.. przygotowałem sobie animacje(preloader) która będę dodawał, a usuwał ją w momencie wystąpienia zdarzenie COMPLETE dla danego loadera.

dziękuje z góry za pomoc

pozdrawiam.

konto usunięte

Temat: [as 3.0] dynamiczna galeria problem z preloaderami

Witam,
przykład

loaded = _root.getBytesLoaded();
total = _root.getBytesTotal();
if (getBytesLoaded(_root)>=getBytesTotal(_root)) {
gotoAndPlay(3);
}

procent = int(getBytesLoaded(_root)/getBytesTotal(_root)*100)+" %";
pasek_postepu = int(getBytesLoaded(_root)/getBytesTotal(_root)*100);


Procent - wiadomo, że tworzymy dynamiczne pole i dodajemy nazwę zmiennej (w tym przypadku "procent") :)

Mam nadzieję, że o to chodzi :)

EDIT: W sumie ten przykład bardziej jest odpowiedni pod AS 2.0 ale może coś się przyda :)

To chyba bardziej pasuje

function preloadProgress(myEvent:ProgressEvent):void {
var loaded:int = (myEvent.bytesLoaded / myEvent.bytesTotal) * 100;
container_mc.percentLoaded_txt.visible = true;
container_mc.percentLoaded_txt.text = loaded + "%";
}
function preloadComplete(myEvent:Event):void {
container_mc.percentLoaded_txt.visible = false;
container_mc.addChild(imageLoader);
}
imageLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, preloadProgress);
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, preloadComplete);
Rafał K. edytował(a) ten post dnia 16.04.10 o godzinie 00:16
Krzysztof Michalak

Krzysztof Michalak Front-end / Drupal

Temat: [as 3.0] dynamiczna galeria problem z preloaderami

chodziło mi o coś innego, tzn:

mam np 10 zdjęć w galerii, wszystkie są w zbiorczym klipie (kontenerze) portfolio_con, zdjęcia są powrzucane osobno w klipy które nazywam zdjecie0, zdjecie1, zdjecie2 itd. to wszystko dzieje się w pętli której ilość iteracji zależy od ilości zdjęć i w każdym przejściu (kawałek kodu):

for(var i:int=0; i<list.length(); i++)
{
var mc:MovieClip=new MovieClip();
mc.name="zdjecie"+i;

//moge utworzyc pole tekstowe lub klip ktory ma przestawiac //preloader danego zdjęcia a jego postep/procent bedzie sterowany //przez funkcje preloader_postep

mc.addEventListener(MouseEvent.CLICK, onClick);
mc.addEventListener(MouseEvent.ROLL_OVER, onOver);
mc.addEventListener(MouseEvent.ROLL_OUT, onOut);

var l:Loader = new Loader();
var l_odbicie:Loader=new Loader();

l.contentLoaderInfo.addEventListener(Event.COMPLETE,preloader_usun); l.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, preloader_postep);
// dalej pozostala czesc kodu rozmieszczenie odbicie itp

portfolio_con.addChild(mc);
//koniec }

jak widać w pętli do każdego klipa dorzucam kod do obslugi zdarzeń dla preloadera i teraz w ciele funkcji preloadera nie wiem jak dostać się do tego danego klipa tzn żeby preloader od 1 zdjęcia wyświetlał jakiś monit w postaci procentów czy paska w tym klipie w którym jest 1 zdjęcie.(dorzuce go sobie)
jak się dostać do tego klipa? bo z tego co wiem progresEvent typ zdarzenia jakie jest przekazane do funkcji preloader_postep zawiera wlasciwosci byteLoaded byteTotal to jak się dostać do nazwy lub indesku klipa który preloaduje dana funkcja?
Rafał Toboła

Rafał Toboła Razor s.c. -
współwłaściciel

Temat: [as 3.0] dynamiczna galeria problem z preloaderami

Nie wiem czy dobrze zrozumiałem pytanie, ale event przekazany do metody progress ma takie pole jak currentTarget. Możesz wrzucać loadery do jakiejś tablicy jednocześnie do drugiej wpisywać zera, a w metodzie progress(event:ProgressEvent) dać
var idx:Number = tablica.indexOf(event.currentTarget);
i teraz
druga_tabilca[idx] = event.bytesLoaded*100/event.bytesTotal;
W drugiej tablicy masz chyba to o co pytasz :-).
Krzysztof Michalak

Krzysztof Michalak Front-end / Drupal

Temat: [as 3.0] dynamiczna galeria problem z preloaderami

zrobiłem tak jak pisałeś Rafał z tymi 2 tablicami, oprócz tego dorzuciłem do klipa ze zdjęciem obsługę zdarzenia ENTER_FRAME które odświeża pole tekstowe w danym konkretnym klipie do którego ładuje zdjęcie tak aby była widoczna aktualna ilość procent. Po osiągnięciu 100 % usuwam zdarzenie i preloader. Zostawiam to tak, chyba że są jakieś lepsze propozycje?

dzięki za pomoc:)
pozdrawiam:)
Łukasz Błachowicz

Łukasz Błachowicz codziennie wymiatam
i odkurzam

Temat: [as 3.0] dynamiczna galeria problem z preloaderami

Wyguglaj sobie Bulkloader`a, to biblioteka do ładowania wiekszej ilosci obiektów na raz. W sam raz dla ciebie.
Krzysztof Michalak

Krzysztof Michalak Front-end / Drupal

Temat: [as 3.0] dynamiczna galeria problem z preloaderami

ok poszperam:) dzięki za naprowadzenie. pozdrawiam
Konrad E.

Konrad E. analityk,
projektant,
programista

Temat: [as 3.0] dynamiczna galeria problem z preloaderami

Najprostszym rozwiązaniem jest utworzenie klasy, która będzie odpowiedzialna za wczytanie i wyświetlenie obrazka. Do konstruktora przekazujesz linka, z którego zostanie załadowany obrazek (plus inne parametry). W ciele klasy umieszczasz Loadera, który wykorzystuje tą grafikę preloadera( np. robisz movieClipa, który ma 100 klatek i tylko wywołujesz na zdarzenie onProgress gotoAndStop(procent) ). Po zakończeniu ładowania usuwasz tego movieClipa i dodajesz nowego ze swoją grafiką. Całość hermetyczna i zamknięta. A na zewnątrz masz pętle for, która to jedynie powołuje kolejne instancje tej klasy.

Następna dyskusja:

galeria zdjec z prev i next...




Wyślij zaproszenie do