07. november 2004 - 17:48Der er
19 kommentarer og 1 løsning
lade en .swf loade en anden .swf?
Hej Jeg har prøvet at gøre dette en gang før men fik ikke held af det og nu sidder jeg med den igen. Jeg ville gerne lave en swf der kører i level 0 og i sig selv kun var en preloader og som kunne loade min main .swf også i level 0, Mit problem er at laver jeg en swf og bruger loadMovie vil flash smide min loader ud og gå i gang med at vise min main... som jo så ikke er loaded. Er der en måde at lade en swf tjekke størrelsen på en anden swf, loaded den i en slags container og først når den er helt loaded smide den i level 0 (og dermed smide loader swf ud)
er helt blank så alt hjælp er meget velkommen..
ps. skulle mit spørgsmål være lidt svært at forstå så smid lige en linie så prøver jeg igen... det er åbenbart lidt svært at forklare, kan jeg selv se.
onEnterFrame køres i forhold til den framerate du har angivet i filmen. Det betyder at med en framerate på 24 så vil den fyres af 24 gange i sekundet.
Husk dog altid at fjerne unødvengie onEnterFrames da vi jo ikke vil have alt muligt kørende som vi ikke længere har brug for derfor : this.onEnterFrame = 0;
det ser ud til at virke helt fint.. dog kan jeg ikke lige finde ud af hvor i koden jeg løbende skal aflæse bytes loaded.. jeg har prøvet sådan her men den skriver kun 0
this.createEmptyMovieClip("nyfilm", 1); // 1 er den nye level. nyfilm.loadMovie("index.swf"); nyfilm.onEnterFrame = function() { tekst = "bytes:"+this.getBytesLoaded(); if (this.getBytesLoaded()>=this.getBytesTotal() && this.getBytesLoaded>0) { trace("jeg er færdig"); this.onEnterFrame = 0; } };
this.createEmptyMovieClip("nyfilm", 1); // 1 er den nye level. nyfilm.loadMovie("index.swf"); nyfilm.onEnterFrame = function() { tekst = "bytes:"+this.getBytesLoaded(); if (this.getBytesLoaded()>=this.getBytesTotal() && this.getBytesLoaded>0) { trace("Så meget er loaded : "+this.getBytesLoaded()+" - ud af "+this.getBytesTotal() ); trace("jeg er færdig"); this.onEnterFrame = 0; } };
Altså kig på this.getBytesTotal() og getBytesLoaded.
hmm sært den tracer hverken "jeg er færdig" eller "så meget..." hvilket jo er ret sært... i min tekst variabel vil jeg gerne have placeret antal bytes loaded løbende.. det vil ikke helt spille bold..
this.createEmptyMovieClip("nyfilm", 1); // 1 er den nye level. nyfilm.loadMovie("index.swf"); nyfilm.onEnterFrame = function() { tekst = "bytes:"+this.getBytesLoaded(); if (this.getBytesLoaded()>=this.getBytesTotal() && this.getBytesTotal()>0) { trace("Så meget er loaded : "+this.getBytesLoaded()+" - ud af "+this.getBytesTotal() ); trace("jeg er færdig"); this.onEnterFrame = 0; } };
hmm den viser stadigt intet og hvis jeg bruger bandwith profiler så viser den at min index.swf går i gang ved 87% og der for ikke er helt færdig når den starter...
this.createEmptyMovieClip("nyfilm", 1); // 1 er den nye level. nyfilm.loadMovie("index.swf"); nyfilm.onEnterFrame = function() { tekst = "bytes:"+this.getBytesLoaded(); trace("Så meget er loaded : "+this.getBytesLoaded()+" - ud af "+this.getBytesTotal() ); if (this.getBytesLoaded()>=this.getBytesTotal() && this.getBytesTotal()>0) { trace("jeg er færdig"); this.onEnterFrame = 0; } };
Tak for din hjælp, men du er lidt skråsikker og det tager ikke mange sek. at teste koden inden du sender den.. nu skriver den (en gang i starten): "Så meget er loaded : 0 - ud af 0" og der kommer ingen "jeg er færdig" jeg kører 12 fps. og har placeret koden i første frame af min loader.swf der intet andet indeholder end koden.
Det tager ikke mange sekunder at blive fornærmet, men har du overvejet om jeg havde muligheden for at teste det af - NEj dt havde jeg ikke.
this.createEmptyMovieClip("nyfilm", 1); // 1 er den nye level. nyfilm.loadMovie("index.swf"); this.onEnterFrame = function() { tekst = "bytes:"+this.getBytesLoaded(); trace("Så meget er loaded : "+this.getBytesLoaded()+" - ud af "+this.getBytesTotal() ); if (this.getBytesLoaded()>=this.getBytesTotal() && this.getBytesTotal()>0) { trace("jeg er færdig"); this.onEnterFrame = 0; } }; stop();
Og indsæt lige en stop(); så du ikke kører koden igen og igen.
nå nå , det virkede bare som om du sad og skød i blinde...og så er flash en ret langsigtet proces, jeg antog du sad ved din computer og havde mulighed for at teste scriptet. Jeg skal bruge bytes loaded udskrevet dynamisk så jeg kan udregne procent og fortælle min animation hvilken frame den skal gå til.. sorry men den udskriver kun antal bytes en gang.. stop eller ikke stop, på den størrelse den udskriver ser det ud til at det er størrelsen på min loader.swf den udskriver. den skriver "512" og det er cirka størrelsen på min loader, min index.swf er 98 Kb, jeg har også lagt mærke til den skriver 512 ud af 512 og "jeg er færdig" inden index.swf er loaded... så kan det ikke være det er loader.swf vi får info tilbage om.. Måske skal der oprettes et loader object som man kan spørge til.. jeg ved bare ikke hvordan?
der skulle lige den her i toppen this.createEmptyMovieClip("nyfilm", 1); // 1 er den nye level. nu virker det perfekt... også lokalt ;=) Tak for din tålmodighed nikolajdu , du har i sandhed tjent dine point. er det mig eller er det ikke bare en meget lettere måde at loade på, jeg hader altid at skulle sætte de første par frames af til det.. det fylder, både i lag og timeline.. smider du et svar?
Hvis andre skulle læse denne tråd.. jeg fandt ud af at så snart "index.swf" var loaded ca. 25% gik den bare igang... det så jo ikke helt smart ud, men det kunne hurtigt ordnes med nyfilm.stop() og play()
nyfilm.loadMovie("index.swf"); nyfilm.stop() this.onEnterFrame = function() { ialt = Math.round((nyfilm.getBytesTotal()/1024)); hentet = Math.round((nyfilm.getBytesLoaded()/1024)); procent = int(hentet/ialt*100); preloader_som_kan_være_en_1_pixel_streg._xscale = procent; // vil udvide sig efter antallet af procent tekst = hentet+"/"+ialt+" = "+procent+"%"; if (hentet>=ialt && ialt != 0) { this.onEnterFrame = false; nyfilm.play() trace("gør noget du"); } };
Hvis man bruger attachmovie eller attachsound så skal man slå "export in first frame" fra for ellers vil procenten først starte når lydene eller movieClippene er loadede
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.