Avatar billede Slettet bruger
09. oktober 2008 - 00:59 Der er 3 kommentarer og
1 løsning

Loader-klassen, flere filer

Hej eksperter - plageånden er tilbage.

Nu drejer det sig om, hvordan jeg dynamisk indlæser et ukendt antal SWF-filer. Filerne skal indlæses... og de skal dukke op og forsvinde igen på bestemte tidspunkter (der læses fra en XML).

Til dette har jeg følgende funktion:

function indlaesannotations() {
  // Indlæs nu annotations
  for (var i=0; i<konfiguration.playerclips[aktuelfilm].annotations.length; i++) {
  annotationloader = new Loader();
  annotationloader.load(new URLRequest(konfiguration.playerclips[aktuelfilm].annotations[i].annotationskin));
  annotationloader.contentLoaderInfo.addEventListener(Event.COMPLETE, annotationLoadComplete);
  }
}

...men som jeg ser det, overskriver den jo sig selv, såfremt der er flere forekomster - så hvordan sørger jeg for at give dem dynamisk unikke navne, således at de senere kan refereres til?
Avatar billede andersbro Nybegynder
09. oktober 2008 - 22:38 #1
Prøv at definere en Array til at holde referencer til dine loaders:

var annotationsArray:Array = new Array();

function indlaesannotations() {
  // Indlæs nu annotations
  for (var i=0; i<konfiguration.playerclips[aktuelfilm].annotations.length; i++) {
  var annotationLoader = new Loader();
  annotationsArray[i] = (annotationLoader);
  annotationloader.load(new URLRequest(konfiguration.playerclips[aktuelfilm].annotations[i].annotationskin));
  annotationloader.contentLoaderInfo.addEventListener(Event.COMPLETE, annotationLoadComplete);
  }
}
Avatar billede Slettet bruger
15. oktober 2008 - 16:50 #2
Hej Andersbro.
Det fungerer perfekt som altid - smid bare et svar, så får du point :)
Men lige et supplerende spørgsmål, med forlov:

Jeg skal ha' lavet noget tilsvarende, bare med timere. Opgaven er at en stribe hændelser indlæses fra en XML-fil - og herefter udføres 1 gang med den forsinkelse, der er angivet. Til det har jeg lavet følgende:

function initialiserEvents():void {
    var eventTimers:Array = new Array();
    for(var i=0; i<konfiguration.playerevents.length; i++) {
        eventTimers[i] = new Timer(Number(konfiguration.playerevents[i].starttidspunkt)*1000);
        eventTimers[i].addEventListener(TimerEvent.TIMER, runEvent);
        eventTimers[i].start();
    }
}

function runEvent(e:TimerEvent):void {
    //e.stop(); <-- Hvordan stopper jeg den aktuelle timer igen?
    trace("Event: "+e);
}

Problemet er blot, at jeg ikke kan få de enkelte timere til at stoppe igen.
Når funktionen "runEvent" bliver kørt, skal den stoppe den pågældende timerfunktion. Har du et bud til dette, også?
Avatar billede Slettet bruger
15. oktober 2008 - 17:04 #3
Ahr, bare glem mit sidste spørgsmål - jeg plejer at finde løsninger, NETOP som en forespørgsel er postet :-O Typisk.
Timer-klassen kan udstyres med to parametre, forsinkelsen samt antallet af gange, den skal køres. Perfekt :)
Avatar billede andersbro Nybegynder
15. oktober 2008 - 22:02 #4
Jeg har været væk i nogle dage - men godt at du fandt løsningen selv...
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