webForumDet fria alternativet

Preloada många bilder

5 svar · 438 visningar · startad av oskob

oskobMedlem sedan maj 20021 558 inlägg
#1

Hej!
Jag gör ett litet bildarkiv i flash som ska förladda en hög bilder. Jag har gjort ett script som lägger in bilderna en efter en allt eftersom de laddats i ett MC. Problemet är bara att när jag sedan laddat in alla bilder och ska gå vidare till galleriet så har bilderna försvunnit ur cashen så det tar ett antal sekunder innan bilden man vill se ploppar fram.
Eftersom jag använder ett enda mc för att ladda in alla bilder så tas ju den första bilden bor när den är färdigladdad och ersätts med bild 2 som börjar ladda.
Finns det något sätt att behålla bilderna i chashen även fasst de ersätts i movieclippet?

Tack på förhand!

mirandirMedlem sedan maj 2003750 inlägg
#2

Normalt sett så borde de ligga kvar i cachen efter att de laddat klart. Vad har du för cacheinställning i din webbläsare Eller är du säker på att bilderna verkligen hinner ladda klart innan nästa bild laddas?

/Mirandir

oskobMedlem sedan maj 20021 558 inlägg
#3

Jag testar ju i flashs standalone player så webbläsaren borde inte ha något att säga till om.
Såhär ser koden ut:


thisPreload = 0;
imgPreloader.loadMovie("port/"+images[0]);
this.onEnterFrame = function() {
	var thisPreloadPer = (imgPreloader.getBytesLoaded() / imgPreloader.getBytesTotal())*100;
	if ( thisPreloadPer == 100 && thisPreload < totalImages ) {
		thisPreload++;
		imgPreloader.loadMovie("port/"+images[thisPreload]);
	}
}

Jag har även en progressbar som är kopplad till kalaset och den tuffar på och de räknar upp och ser ut att fungera.

mirandirMedlem sedan maj 2003750 inlägg
#4

Standalone playern har så vitt jag vet ingen cache alls.

Förresten så när du laddar till ett filmklipp så kommer getBytesLoaded() och getBytesTotal() att visa samma resultat tills dess att laddningen inletts (Vilket alltid tar minst en "bildruta"). Därför måste du även lägga till en kontroll att laddningen påbörjats.

Någonting sånt här borde fungera:

thisPreload = 0;
[b]imgPreloader.unloadMovie();[/b]
imgPreloader.loadMovie("port/"+images[0]);
this.onEnterFrame = function() {
	[b]var thisPreloadPer = 0
	if(imgPreloader.getBytesTotal() > 4) 
            	            	thisPreloadPer = (imgPreloader.getBytesLoaded() / imgPreloader.getBytesTotal())*100;[/b]
	if ( thisPreloadPer == 100 && thisPreload < totalImages ) {
		thisPreload++;
		imgPreloader.loadMovie("port/"+images[thisPreload]);
	}
}

/Mirandir

oskobMedlem sedan maj 20021 558 inlägg
#5

Jag får väl testa att ladda upp det någonstans och testa. Konstigt att det inte ska gå att använda flash egna funktion för att simulera uppkopplingshastigheter :|

Har faktiskt en liten variabel som håller koll på om bilden byttes i samma frame och väntar då tills nästa med att göra saker men ditt sätt är antagligen lite säkrare. Tack för det!

oskobMedlem sedan maj 20021 558 inlägg
#6

Hmm... Det här med att den är lite seg med bilder att man måste vänta en frame. Kan det vara samma med laddningen. Att den har laddat klart alla bytes och byter bild men den har inte riktigt hunnit fatta att den är laddad så den kastar datan?

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