13. december 2004 - 10:01Der er
18 kommentarer og 1 løsning
Preload then play
Jeg har 2 swf'er. En intro animation med en preload ting (Progress Bar og Loader component), og en swf med main content. Den loader fint nok, men den begynder at afspille swf'en lige så snart den har loadet den (kan høre musikken fra main filen). Jeg ville gerne have at intro animationen kører færdig inden "main" filen bliver vist... eller hørt. Har kigget massere af steder man kan ikke rigtigt hitte ud af det.
Loader du din indholds-swf ind i preload-swf'en, eller har du en 3. som holder styr på det hele? Hvordan ser dit preload-script ud, og hvor mange frames strækker din preloadanimation over (og ligger animationen inde i et mc for sig selv, eller på main timeline)?
Hvis jeg forstår dig ret, vil det så ikke være smartest at samle dine 2 swf'er i én og køre preload på dem sammen? Når det hele så er loadet, sætter du introen igang og gør det muligt at hoppe videre med det samme. Umiddelbart ser dine filer ikke ud til at være så store at det er nødvendigt at splitte dem op. Er der en god grund til at de er adskilt nu?
Njaa, tænkte at main filen nok kommer til at fylde lidt mere. Men du har nok ret. Men det bliver vel det samme problem hvis jeg sætter mainfilen ind efter introen. Den starter jo stadig med det samme.
Øhh... til! :) Har nu sat dem sammen. Droppede de indbyggede komponenter, og lavede en bar af en firkant. Læste herpå eksperten at det var det man skulle :P flg kode sidder på bar'en i frame 110:
onClipEvent(enterFrame){ loading = _root.getBytesLoaded(); total = _root.getBytesTotal(); percent = Math.round(loading/total*100); percentage = percent+"%"; loadbar._width = percent; if(loading == total && total > 0){ _parent.gotoAndPlay(115); } }
I frame 111 står der gotoAndPlay(110);
Men den går aldrig til frame 115 hvor "Enter site" knappen kommer frem. Hvad gør jeg mon galt? Sikkert fordi man skal preloade i frame 1? Men det vil jeg ikke, jeg vil preloade i frame 110.
Du har ret i, at man normalt sætter sin preloader på en af de første frames, men hvis din start ikke er ret tung rent kb-mæssigt inden frame 111, så er der ikke noget i vejen med at indsætte den senere.
Prøv at smide nedenstående ind lige over din if-sætning inde i onEnterFrame. Det skulle gerne resultere i et output til dit outputvindu når du tester i Flash. På den måde kan du tjekke hvad prelodscriptet gør, og om det overhovedet bliver kaldt:
trace("Preloaderen siger : " + loading + " ud af " + total + " er hentet");
..hvis du forresten ikke allerede ved det, kan du i Flash trykke ctrl-enter 2 gange for at simulere en download fra nettet. Inde i swf'vinduet kan du i menuen "view->download settings" afkrydse hvilken forbindelse brugeren henter ned med.
Ok, puttede din trace linie ind. Men der sker ikke noget i output når jeg tester. Hvad mon det kan skyldes? Det bliver vel ikke læst af flash. Koden sidder på et mc (loadbar). Loadbar indeholder en shape og ikke andet. Loopet fungerer fint tror jeg. Kan det tænkes at det er fordi at det hele er loadet ind, inden tidslinien når til preloaderen? 110 frames er jo omkring 5 sek.
Hvis alt er loadet ind inden du når frem til preloaderen, burde i hvert fald en linje blive tracet ud. Så det lader til, at du får stoppet filmen inden du når frem til preloaderen. Har du en stopaction et eller andet sted på main timeline?
Tror ikke det er det... "preload baren" bliver vist når den skal tror jeg. Filmen stopper når den når til preload. Se her: http://www.ullebulle.dk/34.swf
Og der er ingen stop actions inden preloader framen.
..men der ER en stopaction i samme frame som preloaderen?
Prøv at flytte din trace ind i if-sætningen. Bliver den kaldt, er det så referencen (gotoAndPlay(115)) den er gal med. Bliver den ikke kaldt, så prøv at udskifte "==" med ">="
Driller det stadigvæk, kan du evt. lægge Fla'en op, så jeg kan give den et kig. Måske er det en helt 3. ting den er gal med?
Du skal udskifte dit "gotoAndPlay(110)" med "stop()" i frame 111. Så skal du flytte den øverste frame med stop()-actionen til frame 110 og sørge for, at din preloader også kun ligger på denne frame og ikke andre. (hvilket vil sige, at du bare kan flytte den tomme frame på content-laget fra frame 125 til 111)
Prøv forresten også lige tricket med at trykke ctrl-enter 2 gange, så oplever du hvor lang tid der går før dine brugere skal vente inden introen....
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.