Avatar billede lokum Nybegynder
18. marts 2004 - 09:56 Der er 14 kommentarer

fra loadVars-objekt til _root??

Hej,

Jeg har et system programmeret i flash, som kalder alle tekstvars i _root... Men nu skal jeg så loade nogle nye eksterne tekster (fra txt-fil) med loadVars:

mineVars = new loadVars();
mineVars.load("tekster.txt");
osv...

Jeg vil nu undgå at skulle sætte en "mineVars" foran alle tekstVar-kald!!!

Derfor: Hvordan kalder jeg alle tekstfilens variabler til _root - eller hvordan overfører jeg alle "mineVars"-variabler til _root??

/Kys lokum
((o;
Avatar billede mat Nybegynder
18. marts 2004 - 10:09 #1
_root.someVar = minVars.someVar; // ?

Men jeg forstår ikke rigtigt argumentet, om du skal skrive _root eller mineVars foran en variabel er vel et fedt, og med forskellige LoadVars objekter har du da nogenlunde styr på hvad der ligger hvor, og de bliver netop ikke rodet rundt med de øvrige variabler i _root?
Avatar billede lokum Nybegynder
18. marts 2004 - 10:21 #2
Ja, det er et fedt - rigtigt nok også bedre at have mine variabler i "mineVars". Men problemet er, at jeg vil undgå at skulle ændre alle "tekstvariabel-kald" (mange forskellige steder) i flash-filen.

Alle tekster kaldes i _root og der er mere end 100 stk.

Derfor har jeg ikke lyst til:
_root.tekst12 = mineVars.tekst12;
_root.nyhedsTekst53 = mineVars.nyhedsTekst53;
_root.andetTekst24 = mineVars.andetTekst24;
_root.ordbogsTekst35 = mineVars.OrdbogsTekst35;
...

kan man ikke tage hele "mineVars"-objektet og smide dets indhold i _root på een gang?? Eller loade sine vars direkte til _root (uden at bruge loadVariables()).
Avatar billede mat Nybegynder
18. marts 2004 - 10:29 #3
Jeg tror ikke umiddelbart at der er en "rootify" funktion i flash? Jeg tror også at LoadVars objektet insisterer på at holde på variablerne? Men det kan da godt være jeg overser et eller andet?

Men hvis dine variabler allesammen er nummereret efter et system(?) ligner det da noget der kan simplificeres i en løkke?
Avatar billede lokum Nybegynder
18. marts 2004 - 10:37 #4
Der er desværre for mange forskellige navne på variablerne, så det kan nok bedst betale sig at kalde loadVars-objektet på den "rigtige" måde... så det gør jeg! Ellers tak for det, mat. ((o;
Avatar billede mat Nybegynder
18. marts 2004 - 10:49 #5
ok måske en løsning (den er ikke specielt gennemtestet) og jeg ved heller ikke om der faktisk sker det jeg tror (og håber der sker)...men here goes:


l = new LoadVars();
l.a = "aa";
l.b = "bb";
l.c = "cc";
trace(l.a);
trace(l.b);
trace(l.c);

for (i in l) {
    trace("i in for in: " + i + " ...l[i] in for in: " + l[i]);
    _root[i] = l[i];
   
}

trace(a);
trace(b);
trace(c);


Det ligner da lidt en "rootifikering"? :P
Avatar billede nikolajdu Nybegynder
18. marts 2004 - 12:04 #6
Vil det ikke være nemmere at lægge en funktion i roden og så bare kalde den?
Avatar billede mat Nybegynder
18. marts 2004 - 12:06 #7
waddayoumean? Jeg troede det gik ud på at få kopieret variabler fra et LoadVars objekt til _root - altså basicly "ændre" scope?
Avatar billede nikolajdu Nybegynder
18. marts 2004 - 12:10 #8
l = new LoadVars();
l.onLoad = function(s){
if(s){
for (a in this){
_root[a] = this[a];
}
}
}

?
Avatar billede mat Nybegynder
18. marts 2004 - 12:14 #9
nåeh jojo, men det er jo det samme, om det er pakket ind i en funktion eller ej er jo i virkeligheden lidt ligemeget. Ovenstående var blot en demonstration, ikke en implementation :)
Avatar billede nikolajdu Nybegynder
18. marts 2004 - 12:16 #10
Den eneste forskel er ve bare at vi her venter til data er hentet. Måske vi oven i købet skulle slette hele molevitten til sidst - Så variablerne ikke ligger 2 steder.

l.onLoad = function(s){
if(s){
for (a in this){
_root[a] = this[a];
}
}
deletet.this
}
Avatar billede nikolajdu Nybegynder
18. marts 2004 - 12:19 #11
ike kan nok gætte hvad jeg ville og ikke kigge på hvad jeg skrev.
Avatar billede mat Nybegynder
18. marts 2004 - 12:22 #12
I mit eksempel laver jeg bare et LoadVars objekt og giver det nogle properties - ene og alene af testårsager - jeg henter jo ikke noget ind, det er kun et eksempel.

Du har helt ret i at det nok i en implementation ville ligge i onLoad() :) - men det forbehold at onLoad ligger een til i for..in loopet (tror jeg nok :) 

Og delete sletter referencer ikke objekter, og du kan ikke delete "this" referencen (tror jeg nok :)

..jeg "tror" meget ;)

mvh mat
Avatar billede nikolajdu Nybegynder
18. marts 2004 - 12:31 #13
hehe....

Du har ret
Avatar billede lokum Nybegynder
18. marts 2004 - 13:39 #14
>>> mat, tjek lige din hotmail... (o;
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