Avatar billede Slettet bruger
26. november 2005 - 16:59 Der er 6 kommentarer og
1 løsning

Opret X antal objekter!

Hej eksperter.

Jeg har klasse ved navn "Page".
Andetsteds ønsker jeg nu at oprette et nyt instance af denne.
Altså f.eks. side = new Page();... intet problem

Imidlertid ønsker jeg at oprette en STRIBE objekter istedet med forskellige navne.
Problemet er dog, at jeg ikke helt kan greje syntaksen.

for (i=0; i<mitarray.length; i++) {
  side+i = new Page(); <-- ?!?
}

Nogle bud?
Avatar billede nikolajdu Nybegynder
26. november 2005 - 17:09 #1
this["side"+i] = new Page(); <-- ?!?
Avatar billede Slettet bruger
26. november 2005 - 17:31 #2
Det troede jeg også... men stadig; intet sker.
Her er resten af koden:

xml_obj = new XML();
xml_obj.ignoreWhite = true;
xml_obj.load("content.xml");
xml_obj.onLoad = function(s) {
  if (s) {
    trace("XML-fil læses korrekt");
    for (i=0; i<10; i++) {
      trace("Opretter objekt nr. "+i);
      this["side"+i] = new Page();
    }
  }
}

Lister jeg variablerne under eksekveringen, ses mine Page-instances ikke :-|
Avatar billede nikolajdu Nybegynder
26. november 2005 - 18:03 #3
Hvordan ser din Page class ud?
Avatar billede Slettet bruger
26. november 2005 - 19:19 #4
Indtil videre, blot sådan:

class Page {
    private var WhichPage;
    private var WhichObject;
    private var ObjectValue;
    private var CoordX;
    private var CoordY;
}
Avatar billede Slettet bruger
27. november 2005 - 10:12 #5
Problem løst. Jeg kan ikke oprette objekter i samme niveau som onLoad - skriver jeg f.eks. _root["side"+i] = new Page(); - ja, så fungerer det. Mystisk.
Avatar billede barklund Nybegynder
27. november 2005 - 12:13 #6
this vil inden i din onLoad page på dit XML-objekt, så du opretter variablerne på XML-objektet frem for på tidslinjen. Dog vil det være meget smartere at proppe dem i et array:

xml_obj = new XML();
xml_obj.ignoreWhite = true;
xml_obj.load("content.xml");
pages = new Array();
xml_obj.onLoad = function(s) {
  if (s) {
    trace("XML-fil læses korrekt");
    for (i=0; i<10; i++) {
      trace("Opretter objekt nr. "+i);
      pages[i] = new Page();
    }
  }
}

Så har du bedre styr på dem. Endda ville jeg lave en særlig PageArray-klasse til at håndtere dem, så du havde fasttypning på, hvad du smed ind i array'et og hvad du fik ud - hvis du altså bruger fasttypning (hvilket ikke bruges i det ovenstående). Men det er måske bare mig :)

--
Morten Barklund
Avatar billede Slettet bruger
04. december 2005 - 11:29 #7
Hej Morten.

Så først nu, du havde skrevet.
Tak for tilbagemeldingen - metoden lyder tiltalende og jeg tester løs :-)

Mvh. Anders
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