webForumDet fria alternativet

Extern preloader

6 svar · 391 visningar · startad av rille31

rille31Medlem sedan okt. 2004186 inlägg
#1

Tjena

Hade tänkt att göra en preloader som väger en del , tex ett MC med en bitmappsbild som animeras och en enkel kod som visar % i ett dynamiskt textfält.
Diverse filmer ska laddas in i ett filmklipp.
Det måst vara onödigt att ladda samma tunga preloader i varje extern film.
Hur gör man för att återanvända preloadern så att den visar
statusen för dom laddade filmerna, har läst om externa prealoders men hittar inga bra tutorials på nätet.

AlarMedlem sedan nov. 2004149 inlägg
#2

Hej,
jag har använt nedanstående enkla preloader för att ladda swf:er.

Skapa ett movieclip. Lägg följande script på frame 1:

_root.stop();
totalbytes = _root.holder.getBytesTotal("movie"+_root,"i"+".swf");
loadedbytes = _root.holder.getBytesLoaded("movie"+_root,"i"+".swf");
if(totalbytes > 4 && totalbytes == loadedbytes) {
_root.play();

Och detta på frame 2:
gotoAndPlay(1);
}

i är en variabel som du tilldelar ett värde.
Swf:erna som laddas heter alltså movie1.swf, movie2.swf osv.
Jag brydde mig inte om att ha en räknare men det kan du naturligtvis lägga till på sedvanligt sätt - dvs, som i vanliga preloaders.

Det hela funkar utmärkt.

/Alar

rille31Medlem sedan okt. 2004186 inlägg
#3

Tsm Alar, ska testa vid tillfälle :)

Fråga: Ska jag köra ngt i denna stil på knapparna i huvudtidslinjen som laddar in filmerna

on (press) {
i = 1;
holder.loadMovie("movie"+i+".swf");
}

På vilket sätt anropar du filmklippet med laddaren, kanske laddare._visible=true;?

Huvudtidslinjen står stilla och den laddade filmen ska spela,
sulle det här funka?

_root.holder.stop(); //stoppar movie1
totalbytes = _root.holder.getBytesTotal("movie"+_root,"i"+".swf");
loadedbytes = _root.holder.getBytesLoaded("movie"+_root,"i"+".swf");
if(totalbytes > 4 && totalbytes == loadedbytes) {
_root.holder.play(); //movie1 börjar spela
_this._visible=false; //gömmer laddaren

Och detta på frame 2:
gotoAndPlay(1);
}

Är tacksam för eventuell hjälp
:r

AlarMedlem sedan nov. 2004149 inlägg
#4

Jo, någonting i den stilen borde funka...

Upptäckte förresten att jag placerat } fel.
} ska naturligtvis vara i slutet på första scriptet.
Script 2 behöver ingen }

/Alar

rille31Medlem sedan okt. 2004186 inlägg
#5

Gjorde en sådan här kod för laddaren men vet inte om den funkar
den verkar bara blinka till med 100%, (har bredband men ändå).

//kod frame1
_root.container.loadMovie("movie"+_root.i+".swf");
percent = Math.floor(_root.container.getBytesLoaded("movie"+_root.i+".swf")/_root.container.getBytesTotal("movie"+_root.i+".swf")*100);
perLoader.per.text = percent+"%";

Ska sökvägen för getBytesLoaded koden vara så eller såhär
getBytesLoaded(_root.container."movie"+_root.i+".swf")

//kod i frame 2
if (percent >= 100) {
gotoAndPlay(out);
} else {
gotoAndPlay(loading);
}

AlarMedlem sedan nov. 2004149 inlägg
#6

Har inte kollat din kod särskilt noga men upptäckte att du skrivit _root.i

Skall vara _root,"i"

OBS kommatecknet och citat.

/Alar

rille31Medlem sedan okt. 2004186 inlägg
#7

Jag har gjort så att i är en variabel som ändras när man trycker på en knapp i huvudtidslinjen

on (press) {
_root.i="1";
_root.loader.gotoAndPlay(loading);//här börjar inladdningen av movie1 eller vad det nu är för värde på i tex 2
}

//kod på loadinglabeln som loppar på tidslinjen mellan två frames
_root.container.loadMovie("movie"+_root.i+".swf");
percent = Math.floor(_root.container.getBytesLoaded("movie"+_root.i+".swf")/_root.container.getBytesTotal("movie"+_root.i+".swf")*100);
perLoader.per.text = percent+"%";

om jag skriver "i" blir det väl stringen "i" iställer för tex i="1" dvs moviei.swf istället för movie1.swf eller har jag tänkt fel, hursomhelst så funkar inladdningen men procentfältet blinkar bara 100% fast jag tömt cacheminnet.

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