Avatar billede grafik-anders Seniormester
25. februar 2007 - 22:39 Der er 12 kommentarer og
1 løsning

Hvordan tjekker jeg om mine variabler er blevet loadet med loadVa

Hvordan tjekker jeg om mine variabler er blevet loadet med loadVariables?

Jeg vil gerne hente nogle variabler fra en ekstern fil med loadVariables, men jeg skal være sikker på, at de er blevet loadet korrekt, før jeg begynder et bruge dem i mit script.

Hvordan gør jeg det?

/Anders
Avatar billede _k Nybegynder
25. februar 2007 - 22:54 #1
Du droppper loadVariables og anvender LoadVars i stedet. Det er både mere driftsikkert og bedre at tjekke på (..og Adobe/Macromedia har anbefalet at skifte til det de seneste 4-5 år ;)). Kig i hjælpen eller evt. herinde for hjælp til hvordan du bruger LoadVars. Går du død, så smid bare dine spørgsmål herinde.
Avatar billede grafik-anders Seniormester
25. februar 2007 - 23:21 #2
Hmm,,, tjo, -

Jeg har en textfil på min server, som hedder "data.txt"

Her i har jeg den variabel, som jeg ønsker at loade, senere ændre jeg den til at være en dynamisk side, som henter de rigtige data fra databasen.

Indtil videre står der følgende i datafilen:
billede="product_138_bar_frontal_skitse.jpg"


min ønskede variabel hedder altså: billede og er lig med "product_138_bar_frontal_skitse.jpg".

Hvordan henter jeg dette med load?

Mydata=load("http://www.firstdisplay.com/data.txt",billede)

?
Avatar billede _k Nybegynder
26. februar 2007 - 01:22 #3
Nope. Snarere noget i retning af:

var l:LoadVars = new LoadVars();
l.onLoad = function(s:Boolean) {
  if(s) {
    // Dokumentet er loadet og alt gik godt. Såt din var her med: l.variabelnavnFraText
  }
};
l.load("http://www.firstdisplay.com/data.txt");
Avatar billede grafik-anders Seniormester
26. februar 2007 - 19:11 #4
Hjælp!, - jeg er sad helt af. Her kan man erfaring med gode gamle amiga-amos slet ikke følge med.

Kan du skære det ud i pap for mig?

Hvor skal jeg placere koden, så det virker?
Avatar billede _k Nybegynder
26. februar 2007 - 19:22 #5
At sætte den på en keyframe er den bedste ide.

Ved ikke helt hvordan jeg ellers skal "skære" det ud ;) Hvor bruger du indholdet af tekst-dokumentet? Er det noget du putter i et tekstfet?
Så kan du nemlig blot give tekstfeltet et "instance name" og sætte dets indhold når alt er loadet:

if(s) {
    tekstfelt_navn.text = this.variabelnavn;
  }

...du kan også kalde LoadMovie derinde hvis du ønsker at loade det billede du refererer til: LoadMovie(this.variabelnavn, mc_du_vil_loade_ind_i;
Avatar billede grafik-anders Seniormester
26. februar 2007 - 22:50 #6
Ja, - det er faktisk lidt mere kompliceret, - desværre. Der skal nemlig både findes en titel på et billede, som skal loades, samt et kunstnernavn og en billedtitel. Altså skal der loades i alt 3 variabler, når det hele er færdig bygget.

Jeg har en kode på et movieclip, som med en if-sætning bestemmer, hvornår det er tid til at finde de 3 variabler og at starte med et loade billedet.

Det dur selvfølgeligt ikke, at den forsøger at hente billedet før variablen med navnet er loadet.

Forstår du, hvad jeg mener?

Er det rigtigt, at mine data i data.txt skal struktureres således:
billede="product_138_bar_frontal_skitse.jpg"&Kunstner="Tine Hansen"&titel="Streets"
?
Avatar billede _k Nybegynder
27. februar 2007 - 09:42 #7
Du skal ikke bruge anførselstegn til at adskille variablene. Så det skal se sådan her ud: billede=product_138_bar_frontal_skitse.jpg&Kunstner=Tine Hansen&titel=Streets

Den kode du refererer til som ligger på et mc. Den kode kan du bare smide ind i if-sætningen i stedet. Måske skal den så omskrives en smule? Det afhænger af hvordan den ser ud. Smid den evt. her.
Det du kyler ind i if-sætningen bliver nemlig først/kun eksekveret når/hvis dine variable er loadet.
Avatar billede grafik-anders Seniormester
28. februar 2007 - 00:17 #8
he, he, - jeg ved at det er en super primitiv kode, som jeg bruger, men jeg bruge de søm, som jeg har/kender :)

onClipEvent (enterFrame) {
    if (_root.skiftTil == 1 and _root.loader1 == "ja" and _root.tid == "nu" and _root.pic1._alpha<100 and _root.tekstTing2._x<=0) {
        _root.pic1._alpha = _root.pic1._alpha+_root.speed;
        _root.pic2._alpha = 100-_root.pic1._alpha;
    } else if (_root.skiftTil == 1 and _root.loader1 == "ja" and _root.tid == "nu" and _root.pic1._alpha>=100 and _root.tekstTing2._x<=0) {
        _root.naesteperson = "af: Tina Louise Hunderup";
        _root.naestevaerk = "Transition";
        _root.tekst = "on";
        _root.pic2.loadMovie("http://www.firstdisplay.com/sider/uploadimages/product_15_transition_100x150.jpg");
        _root.skiftTil = 2;
        _root.tid = "ikke nu";
        _root.loader2 = "nej";
        _parent.play();
    }
    if (_root.skiftTil == 2 and _root.loader2 == "ja" and _root.tid == "nu" and _root.pic2._alpha<100 and _root.tekstTing2._x<=0) {
        _root.pic2._alpha = _root.pic2._alpha+_root.speed;
        _root.pic1._alpha = 100-_root.pic2._alpha;
    } else if (_root.skiftTil == 2 and _root.loader2 == "ja" and _root.tid == "nu" and _root.pic2._alpha>=100 and _root.tekstTing2._x<=0) {
        _root.tekst = "on";
        _root.naesteperson = "af: Ned Cantrell";
        _root.naestevaerk = "Under Water Love";
        _root.pic1.loadMovie("http://www.firstdisplay.com/sider/uploadimages/product_27_Underwater.jpg");
        _root.skiftTil = 1;
        _root.tid = "ikke nu";
        _root.loader1 = "nej";
        _parent.play();
    }
    //trace("tid: "+_root.tid+", skiftTil: "+_root.skiftTil+", loader1: "+_root.loader1+", loader2: "+_root.loader2+", alpha1: "+_root.pic1._alpha+", alpha2: "+_root.pic2._alpha);
}




// forstår du det?
Avatar billede _k Nybegynder
28. februar 2007 - 00:37 #9
Jeg forstår i hvert fald at du godt kan li' "_root" ;)

I princippet behøver du ikke at køre det hele i en onEnterFrame. I dit sted ville jeg nøjes med at sætte variablene når det blev aktuelt (f.eks. når brugeren trykker på en knap?)

Du kan sætte dine variable fra tekstfilen direkte i if-sætning med noget i retning af:

        _root.naesteperson = this.naesteperson;
        _root.naestevaerk = this.naestevaerk;
        _root.skiftTil = this.skiftTil;
        .....

"_root.pic1.loadMovie" er helt i skoven at sætte på en onEnterFrame da Flash playeren så bruger en masse kræfter på at loade det samme billede oven i sig selv hele tiden.
"_parent.play" ved jeg ikke hvad refererer til, men du kan sagtens sætte et eller andet til at afspille fra if-sætningen.

Jeg kan ikke gennemskue præcis hvad det er du vil, og det ligger vel også udenfor dette spørgsmål, men leg lidt med det og spørg gerne mere specifikt indtil delen med at loade dine variable fra et tekstdokument....
Avatar billede grafik-anders Seniormester
28. februar 2007 - 23:26 #10
Det er et slideshow, som skal køre med nogle billeder. Vi skal kunne udskifte billeder og navne løbende og vil derfor gerne have, at det bliver hentet fra en ekstern fil, så vi ikke behøver at gå ind i flash hver gang, at det skal ændres.

Ja, - jeg er desværre en lallende amatør til det her, men jeg har da fået det meste til at virke tilfredsstillende, dog ikke fra en ekstern fil (endnu).

Jeg har lavet det sådan, at _root.pic1.loadMovie kun bliver aktiveret en gang i mellem. Der er en række kriterier, som skal opfyldes først, hvilket gør, at den ikke bliver alt for tung at danse med. Blandt flere er der kriteriet _root.tid == "nu". Når alle de nævnte kriterier er opfyldt, bliver _root.tid sat til "ikke nu".

_parent.play(); starter movieclippets hovedtidslinie, som virker som et slags æggeur. Det skal forstås sådan, at der i hovedtidslinien er en række frames og i den sidste frame bliver variablen _root.tid="nu". Først derefter kan der skiftes til et nyt billede, hvis det da ellers er loadet inden da. Det giver en garanteret minimums tid for hvor lang tid, hvert billede står inden de skifter.

Det er variablerne: _root.naesteperson, _root.naestevaerk og så billedenavnet, som skal hentes. Kan det lade sig gøre?
Avatar billede _k Nybegynder
01. marts 2007 - 09:56 #11
Jeg er ikke fan af din struktur, men "whatever works...." :)

Du kan godt sætte variablene. Du gør det som jeg beskrev i forrige post. Altså at sætte dem når tekst-dokumentet er loadet ind (inde i onLoad).

Til dine monster-if-sætninger skal du så måske tilføje endnu en variabel eller andet tjek - nemlig om de eksterne variable ER hentet og klar til brug. Hvis du ikke instantierer disse variable nogen steder, kan du nok nøjes med at tjekke på om de ikke er undefined (de vil så være !undefined når de er hentet).
Avatar billede grafik-anders Seniormester
02. juli 2008 - 22:06 #12
Tak for det.

Vil du smide et svar?

:)
Avatar billede _k Nybegynder
03. juli 2008 - 01:13 #13
ok :)
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