Mika3lMedlem sedan nov. 20013 776 inlägg
Håller på med ett bildgalleri och har ett MC (imgloadbarMC) som ändras i höjdled för att flyta över thumbnailen (-120 i höjdled) man precis har tryckt på.
Har testat med följande:
Knapp
on(press) {
varNewPic = "1";
varPicWidth = "750";
varPicHeight = "525";
imgloadbarMC._x = imgbt1._x;
imgloadbarMC._width = imgbt1._width;
loadpicMC.gotoAndPlay(2);
}
Frame
_parent._parent["picMC"].loadMovie("images/archive/good/" + _parent["varNewPic"] + ".jpg");
varLB = _parent._parent["picMC"].getBytesLoaded();
varTB = _parent._parent["picMC"].getBytesTotal();
varPercent = varLB/(varTB/100);
//trace(varPercent + "," + varPercent*1.2);
_parent["imgloadbarMC"]._y -= varPercent*1.2;
if(varLB>=varTB) {
gotoAndPlay(6);
}
Det som händer är att laddaren hamnar på y 0 som den ska göra när bilden är färdigladdad men den gör det även om bilden inte är färdigladdad. Nån som har några aningar om vad som kan va fel? :)
mirandirMedlem sedan maj 2003750 inlägg
När man laddar någonting från en extern källa så tar det ett tag innan Flash registrerar storleken på detta. Det kan ta ett par "bildrutor" men alltid minst en. Under den tiden så returnerar getBytesLoaded() och getBytesTotal() samma värde. Vilket är det värde som det nuvarande filmklippet har.
För ett tomt filmklipp som placerats på "scenen" när du skapade filmen är storleken 4 (bytes). Därför bör man alltid lägga in en kontroll i externa preloaders att storleken på filmklippet är större än 4. Om man har laddat in någonting sedan förut så bör man "nollställa" filmklippet först genom att anropa dess metod unloadMovie() innan man laddar in ett nytt innehåll.
Dessutom så måste du repetera testet och det utan loadMovie som du har i din kod där.
/Mirandir
Mika3lMedlem sedan nov. 20013 776 inlägg
Använder mig av unloadMovie() och testet repeteras men jag skrev inte det för jag tänkte att det var en självklarhet. ;)
Men jag ska alltså ha loadmovie() i en egen frame och en kontroll, if(picMC._getbytestotal()>4)?, innan procenträknandet drar igång?
mirandirMedlem sedan maj 2003750 inlägg
Men jag ska alltså ha loadmovie() i en egen frame och en kontroll, if(picMC._getbytestotal()>4)?, innan procenträknandet drar igång?
Du kan även använda:
if(varLB>=varTB && varTB > 4) {
gotoAndPlay(6);
}
/Mirandir
Mika3lMedlem sedan nov. 20013 776 inlägg
Hmm.. Det verkar fungera bra på dom normala bilderna men när jag testar med att ladda in en bild som är några mb stor så drar preloadern bara iväg nu.
1 (frame):
stop();
2:
if(_parent._parent.picMC._alpha<=0) {
_parent._parent["picMC"].unloadMovie();
gotoAndPlay(4);
}
_parent._parent.picMC._alpha -= 10;
_parent["imgloadbarMC"]._y = 120;
_parent["imgloadbarMC"]._alpha = 40;
3:
gotoAndPlay(2);
4:
_parent._parent["picMC"].loadMovie("images/archive/good/" + _parent["varNewPic"] + ".jpg");
5-8: Tomt
9:
varLB = _parent._parent["picMC"].getBytesLoaded();
varTB = _parent._parent["picMC"].getBytesTotal();
if(varTB>4) {
varPercent = varLB/(varTB/100);
trace(varPercent + "," + varPercent*1.2);
_parent["imgloadbarMC"]._y -= varPercent*1.2;
if(varLB>=varTB) {
gotoAndPlay(11);
}
}
10:
gotoAndPlay(9);
11:
_parent._parent["picMC"]._x = (770-_parent["varPicWidth"])/2;
_parent._parent["picMC"]._y = (570-_parent["varPicHeight"])/2;
12:
if(_parent._parent["picMC"]._alpha>=100) {
gotoAndStop(1);
}
_parent._parent["picMC"]._alpha += 10;
_parent["imgloadbarMC"]._alpha -= 10;
13:
gotoAndPlay(12);
mirandirMedlem sedan maj 2003750 inlägg
I koden så använder du "-=". Detta drar bort du bort 1,2 gånger laddade procent från imgloadbarMCs _y poistion för varje gång bildruta 9 körs. Det innebär att ju längre preloadern håller på desto längre ner åker filmklippet.
/Mirandir
Mika3lMedlem sedan nov. 20013 776 inlägg
Nu funkar det ju utmärkt! Hade ju tänkt en aning fel där med sista grejen, va ju lätt att lösa! Tack för hjälpen! :)