Avatar billede jacobs1 Nybegynder
12. september 2004 - 15:29 Der er 12 kommentarer og
3 løsninger

loadVars via en knap

er der ikke en smartere måde at skrive det er kode på, det virker fint, men synes bare det bliver så uoverskueligt :)

forside.onPress = function ()
{
loader = new LoadVars();
loader.load("forside.txt");
loader.onLoad = function(ok) {
    if (ok) {
      _root.tekstFelt.text = this.text;
    } else {
        _root.tekstFelt.text = "Der er desværre sket en fejl";
    }
};
};
underside1.onPress = function ()
{
loader = new LoadVars();
loader.load("underside1.txt");
loader.onLoad = function(ok) {
    if (ok) {
      _root.tekstFelt.text = this.text;
    } else {
        _root.tekstFelt.text = "Der er desværre sket en fejl";
    }
};
};
underside2.onPress = function ()
{
loader = new LoadVars();
loader.load("underside2.txt");
loader.onLoad = function(ok) {
    if (ok) {
      _root.tekstFelt.text = this.text;
    } else {
        _root.tekstFelt.text = "Der er desværre sket en fejl";
    }
};
};
Avatar billede _k Nybegynder
12. september 2004 - 15:56 #1
Hvis du smider din LoadVars i en funktion, kan du tilgå den via et argument:

var sideArray:Array = new Array("forside", "underside1", "underside2");
function hentSide(sideNr) {
  loader = new LoadVars();
  loader.load(sideArray[sideNr] + ".txt");
  loader.onLoad = function(ok) {
    if (ok) {
      _root.tekstFelt.text = this.text;
    } else {
        _root.tekstFelt.text = "Der er desværre sket en fejl";
    }
  }
}

forside.onPress = function (){
  hentSide(0);
}

underside1.onPress = function (){
  hentSide(1);
}

underside2.onPress = function (){
  hentSide(2);
}
Avatar billede jacobs1 Nybegynder
12. september 2004 - 16:10 #2
Super fedt :)

Jeg kan bare hente 17 txt filer ind på den her måde, hvis jeg bare udbygger arrayet  ikk..?

Husk at læg et svar så du kan få dine point
Avatar billede barklund Nybegynder
12. september 2004 - 16:14 #3
Lav kun 1 loadvars objekt og kun 1 onLoad handler - så sparer du en hel masse:

loader = new LoadVars();
loader.onLoad = function(ok) {
    if (ok) {
      _root.tekstFelt.text = this.text;
    } else {
        _root.tekstFelt.text = "Der er desværre sket en fejl";
    }
};
forside.onPress = function () {
    loader.load("forside.txt");
};
underside1.onPress = function () {
    loader.load("underside1.txt");
};
underside2.onPress = function () {
    loader.load("underside2.txt");
};

Du kan stadig putte sidenavnene i et array, men ingen grund til at lave et nyt loadvars objekt hver gang, når de alligevel er ens. Så fylder man bare hukommelsen unødvendigt op.

--
Morten Barklund
Avatar billede barklund Nybegynder
12. september 2004 - 16:14 #4
Hov, det skulle ikke være et svar med mindre du kan bruge det :)
Avatar billede jacobs1 Nybegynder
12. september 2004 - 16:20 #5
jeg tror bare jeg bruger _k svar, det plejer jo også at være dig der får mine point barklund :)
men hvorfor en udgave ville i bruge?? hvorfor en er mest stabil?
Avatar billede _k Nybegynder
12. september 2004 - 17:03 #6
Barklund er som sædvanligt fremme i skoene med den bedste løsning. Som han er inde på, er det langt bedre kun at oprette objektet én gang, og så overskrive når man har brug for det.
Min ide med funktionskald er ikke helt ude i hampen, så alt efter hvordan din applikation ser ud, ville jeg selv klart overveje den. Men hvorfor henter du egentlig ikke bare alle dine undersider.txt ind sammen med forsiden? Medmindre vi snakker MEGET tekst, vil det da være smartest kun at hente en halvstor ting én gang, fremfor mange små, mange gange?
Avatar billede barklund Nybegynder
12. september 2004 - 20:42 #7
Jeg ville umiddelbart holde mig til min egen løsning, men nok bruge en hjælpefunktion til at hente dem via og efterfølgende "cache" siderne, så når de var hentet en gang blev de ikke hentet igen. Man kunne gøre det som:

loader = new LoadVars();
loader.onLoad = function(ok) {
    if (ok) {
        tekstFelt.text = indhold[nuværende_side] = this.text;
    } else {
        tekstFelt.text = "Der er desværre sket en fejl";
    }
};
sider = new Object();
sider["forside"] = "forside.txt";
sider["side1"] = "underside1.txt";
sider["side2"] = "underside2.txt";
indhold = new Object();
nuværende_side = null;
function hentSide(id) {
    if (indhold[id] == undefined) {
        loader.load(sider[id]);
    } else {
        tekstFelt.text = indhold[id];
    }
    nuværende_side = id;
}
forside.onPress = function () {
    hentSide("forside");
};
underside1.onPress = function () {
    hentSide("side1");
};
underside2.onPress = function () {
    hentSide("side2");
};

Denne funktion arbejder med tekst-id'er istedet for numeriske id'er - men det kan man selvfølgelig lave, som man synes.

--
Morten Barklund
Avatar billede jacobs1 Nybegynder
12. september 2004 - 21:10 #8
mange mange tak :)
hvordan lægger jeg 30 point mere i puljen så i begger kan få en bid af kagen?
nu husker den siderne eller hvad, og jeg skal ikke gøre andet end at sætte dette scipt ind i stedet for det andet?
Avatar billede barklund Nybegynder
12. september 2004 - 21:13 #9
Det er korrekt. Du hæver pointene ved at vælge det fra menuen i højre side eller klikke på point-tallet.
Avatar billede jacobs1 Nybegynder
12. september 2004 - 21:14 #10
og hvis jeg nu har 17 sider skal jeg bare
sider["forside"] = "forside.txt";
sider["side1"] = "underside1.txt";
sider["side2"] = "underside2.txt";
osv
sider["side17"] = "underside17.txt";
Avatar billede barklund Nybegynder
12. september 2004 - 21:15 #11
Ja for eksempel :)
Avatar billede jacobs1 Nybegynder
12. september 2004 - 21:26 #12
så mangler vi bare _K svare.
Avatar billede _k Nybegynder
13. september 2004 - 09:23 #13
ok, here goes
Avatar billede barklund Nybegynder
13. september 2004 - 12:58 #14
Tark for points :)
Avatar billede jacobs1 Nybegynder
13. september 2004 - 15:03 #15
så lidt :) tak for hjælpen
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