Avatar billede sofuzz Nybegynder
10. juni 2004 - 16:28 Der er 9 kommentarer og
1 løsning

Preload swf fil, så den er klar til afspilning inde i hovedscene

Jeg arbejder med én .fla fil - der er opdelt i nogle scener.

Jeg har lavet en preloader i min hovedfilm (preloaderen er i en "preload_scene" for sig, som looper indtil "hovedscenen" er loadet). Som sådan fungerer det fint - al grafik, movies, buttons osv. bliver loadet. Problemet er imidlertid, at midt inde i "hovedscenen" (præcis i frame 44 af 68), skal der påbegyndes en afspilning af en ekstern swf fil (et musik-loop som ligger i en swf fil der fylder 220 kb). I øjeblikket har jeg et actionsscript på frame 44 [ LoadMovie ("loop_sound.swf", 1) ] i hovedscenen, hvilket selfølgelig medfører at musikken IKKE starter præcis der hvor den skal (fordi den liiiige skal loade de 220 kb). Dvs. at selv om preloaderen siger, at hele hovedscenen skal være loadet før den påbgyndes [dvs. ifFrameloaded ('hovedscene', 68) gotoandplay ('hovedscene', 1), så loader den ikke den eksterne swf fil ('loop_sound.swf').

Jeg har læst rigtig mange af indlæggene omkring preload af eksterne filer osv., men det er som om at de ikke kan bruges i dette tilfælde. Derudover er jeg absolut ikke en haj til as, hvilket måske er den virklige årsag til mit spørgsmål.

Kort fortalt vil jeg bare have preloaderen til at preloade swf filen INDEN den begynder afspilning af "hovedscenen", således at musikken er 100% klar til afspilning, når hovedet når frem til frame 44.

Nogen der har den - uden tvivl - indlysende løsning?


P.s: Preloaderen skal ikke indeholde nogen statuslinje for hvor meget der er loadet osv... Ikke noget fansy overhoved. Bare selve koden der skal sørge for at den kære lydfil (dvs. .swf fil) loader og er klar til brug  ;-)
Avatar billede mat Nybegynder
10. juni 2004 - 20:40 #1
Hvis du alligevel vil loade din lydfil "samtidig" med din hovedfil, hvorfor så overhovedet have den i en seperat swf? Formålet med at splitte projekter op i flere swf er vel netop at man loader materiale efterhånden som man har brug for det?
Avatar billede pyroman Nybegynder
10. juni 2004 - 20:44 #2
jeps - den kommer her:

_level1.loadMovie("loop_sound.swf");
_root.onEnterFrame = function(){
  if(_root.getBytesLoaded() == _root.getBytesTotal() && _level1.getBytesLoaded() == _level1.getBytesTotal() && _level1.getBytesTotal > 0){

  nextScene();
}
Avatar billede pyroman Nybegynder
10. juni 2004 - 20:45 #3
hov - mangler lige noget:

_level1.loadMovie("loop_sound.swf");
_root.onEnterFrame = function(){
  if(_root.getBytesLoaded() == _root.getBytesTotal() && _level1.getBytesLoaded() == _level1.getBytesTotal() && _level1.getBytesTotal > 0){
  delete this.onEnterFrame;
  nextScene();
}
Avatar billede pyroman Nybegynder
10. juni 2004 - 20:46 #4
men rigtig nok som mat siger... hvorfor egentlig lægge lyden som en extern swf?
Avatar billede sofuzz Nybegynder
10. juni 2004 - 21:35 #5
Hmmm... jo altså: Ved at lægge lyden indeni en ekstern swf fil (som egentlig er en button) kan den spille på tværs af alle de diverse scener som ligger i hovedfilen. Det fungerer fint, men det er selve starttidspunktet for afspilningen som ikke er så let styre (fordi den pt. får besked på at loade i frame 44 og tager tid at loade). Hvis jeg lægger den ind i hovedscenen (og derved også ind i hovedfilen), så kan jeg ikke lade brugeren slukke og tænde for lyden på tværs af scenerne...

Til pyroman: Jeg har forsøgt at smide ovenstående kode ind i første frame i preloaderen, men jeg er ikke sikker på at det hjælper. Skal jeg stadig beholde det andet actionscript i frame 44 i hovedscenen (LoadMovie ("loop_sound.swf", 1)) eller er det måske dét der gør, at lyden stadig ikke starter præcis på frame 44 (fordi as reloader filen)?
Avatar billede pyroman Nybegynder
11. juni 2004 - 11:07 #6
Du kan vel bare lægge lyden i et movieclip med en stop(); i første frame, smide dette i  første aller andet frame, i din første scene. Dette kan du give et linkage-navn (højreklik på movieclippet i library'et og vælg 'linkage', her slår du 'export for actionscript' til og slår så 'export in first frame' fra og giver den et navn).

Så kan du altid hente din lyd ind i et _level, og afspille den på tværs af scener:


_root.attachMovie("navn_på_lyd_mc", "nyt_navn", 1);
_root.nyt_navn.play();


Men jeg ved faktisk ikke om den så stadig vil synkronisere tidslinien... Men skal den overhovedet det?
Avatar billede sofuzz Nybegynder
20. juni 2004 - 00:29 #7
Tak tak! det fungerer super godt! Hvordan giver jeg de 60 points til dig (pyroman)...?!?!?
Avatar billede pyroman Nybegynder
20. juni 2004 - 01:27 #8
Ved at jeg lægger et svar, som jeg gør nu ;)
Avatar billede sofuzz Nybegynder
20. juni 2004 - 03:20 #9
Cool  ;-)
Avatar billede sofuzz Nybegynder
21. juni 2004 - 02:55 #10
Sådan...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester