Avatar billede Slettet bruger
01. januar 2010 - 15:15 Der er 1 løsning

Indlæsning af SWF-filer i AS3 i bestemte niveauer

Hej alle - og godt nytår!

Jeg har et spørgsmål til indlæsning af eksterne SWF-filer i AS3.
Årsagen er den ændrede måde, movieclips oprettes i levels på. I AS2 kunne man tilføje en ekstern fil til et vilkårligt niveau; nu skal de tilføjes sekventielt.

I mit tilfælde indlæses en XML-fil. I denne fil defineres, hvilke SWF-filer der skal indlæses, på hvilke positioner m.m.
En for-løkke sørger for at indlæse alle filerne (kalder "swfloader"-metoden), MEN: min onComplete handler placerer filerne på scenen. Det gør at den fil der bliver indlæst først, kommer til at ligge dybest. Hensigten er at de skal placere sig iht. rækkefølgen i XML-filen.

Her er koden:

public function swfloader(filnavn) {
  trace("Vi henter SWF-fil "+filnavn);
  var mLoader:Loader = new Loader();
  var mRequest:URLRequest=new URLRequest("./swf/"+filnavn);
  mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
  mLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
  mLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, fejl);
  mLoader.load(mRequest);
}
       
public function fejl(e) {
  trace("Fejl: "+e.text);
}

public function onCompleteHandler(loadEvent:Event) {
  var mc = addChild(loadEvent.currentTarget.content);
  displayobjekter.push(mc);
  trace(loadEvent);
}


SWF'ernes mLoader eksekveres som nævnt i den rækkefølge, jeg vil ha' filerne, men hvordan styrer jeg deres niveau når nu ikke f.eks. addChildAt(loadEvent.currentTarget.content, 3) længere fungerer hvis ikke level 0,1 og 2 er udfyldt?
Jeg har prøvet alt muligt... :-O
Avatar billede Slettet bruger
01. januar 2010 - 18:20 #1
Nå, jeg har lavet det på en alternativ måde i stedet. For-løkken er droppet - og i stedete indlæses næste swf-fil først når forrige er indlæst og placeret på scenen. Se koden herunder (swfloader-metoden er stadig som i øverste kode:

public function onCompleteHandler(loadEvent:Event) {
            // Placér objektet på scenen
            var mc = addChild(loadEvent.currentTarget.content);
            displayobjekter.push(mc);
            niveau++;
            // Hvis der er flere filer tilbage at indlæse iht. XML'en...
            if (niveau < _xml.filer.fil.length()) {
                // ...så kald swfloader endnu engang
                swfloader(_xml.filer.fil[niveau].filnavn);
            }
        }
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