webForumDet fria alternativet

Problem med preloader

Flashur Flash, Shockwave

6 svar · 302 visningar · startad av Mika3l

Medlem sedan nov. 20018 492 inlägg
Frågan#1

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? :)

Medlem sedan maj 2003750 inlägg
#2

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

Medlem sedan nov. 20018 492 inlägg
#3

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?

Medlem sedan maj 2003750 inlägg
#4

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

Medlem sedan nov. 20018 492 inlägg
#5

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);
Medlem sedan maj 2003750 inlägg
#6

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

Medlem sedan nov. 20018 492 inlägg
#7

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! :)

131 ms totalt · 3 externa anrop · v20260731065814-full.9823c0c5
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)