Avatar billede 13thsky Nybegynder
29. marts 2004 - 18:46 Der er 31 kommentarer og
2 løsninger

hente variabel fra dynamic textfelt?

jeg har 2 layers

i layer 1 står der: loadVariablesNum("getFileName.php", 0);

i layer 2 er der et dynamisk tekstfelt (var=antal)

-getFileName.php returenerer variablen antal som godt nok bliver printet i tekstfeltet.

Men hvis jeg vil bruger variablen antal i scriptet i layer 1, kan den ikke genkende den.
F.eks. har jeg prøvet at skrive følgende i layer 1:

loadVariablesNum("getFileName.php", 0);
tal = Math.random(5)*antal;

-men her genkender den ikke antal???
Avatar billede mat Nybegynder
29. marts 2004 - 19:29 #1
1. Når du henter variabler med loadVariables går der lige et øjeblik før de er fremme - og derfor kan du ikke umiddelbart regne med at de er der når du beder actionscript om at regne på dem. Du er altså enten nødt til at lave et loop hvor du tjekker om variablerne er kommet frem, eller du kan bruge LoadVars() som helt selv smider en event når den har hentet variablerne - og det er jo skidesmart :)

2. Der er en hvis sandsynlighed for at flash mener at "var" (som iøvrigt er et reserveret ord i actionscript) er en variabel af typen String og den datatype er mighty svær at multiplicere med. Desuden er det "var" der peger på "antal" og ikke "antal" selv (som blot er en værdi gemt i "var"). Derfor skal din multiplication nok nærmere formuleres som:

tal = Math.random(5)*Number(var); // såfremt du laver "var" om til et ord som actionscript ikke selv har lagt beslag på :)

..noget i den stil :)

mvh mat
Avatar billede mat Nybegynder
29. marts 2004 - 19:31 #2
Hov der var jeg vist lige hurtig nok i 2´eren - du har åbentbart styr på "antal", sorry 'bout that :)
Avatar billede 13thsky Nybegynder
29. marts 2004 - 19:43 #3
hmmm, hjælpe ikke rigtig noget.... jeg tænkte på om det kunne have noget at gøre med at jeg skal give tekst feltet et navn, hvorefter jeg kan hive variablen ud derfra med noget der minder om:

navnetjeggiver.value()

eller noget i den stil???

//13th Sky
Avatar billede 13thsky Nybegynder
29. marts 2004 - 19:48 #4
ahhh, found the bug...

Når det hele ligger i et movieclip inde i movien, så kan det ikke lade sig gøre.

Men hvorfor så???

//13th Sky
Avatar billede pyroman Nybegynder
29. marts 2004 - 19:51 #5
Brug loadVars objektet - så kan du bedre holde styr på dine varibler fra php'en og hvornår de er hentet - og desuden er det også bedst at give tekstfelter et instanve navn istedet for variabel navne:

varsFraPHP = new LoadVars();
varsFraPHP.onLoad = function(success){
  if(success){
    antal.text = this.antal;
    tal = Math.random(5)*this.antal;
  }
}
varsFraPHP.load("getFileName.php");

/Filip
Avatar billede pyroman Nybegynder
29. marts 2004 - 19:53 #6
og hvis flash ikke kan genkende at variablen fra PHP er et tal skal du lige lave denne øverst i if-koden:

this.antal = Number(this.antal);
Avatar billede 13thsky Nybegynder
29. marts 2004 - 20:00 #7
hvor skriver jeg hvad phpfilen hedder?
Avatar billede 13thsky Nybegynder
29. marts 2004 - 20:04 #8
stupid me.... (c:
Avatar billede 13thsky Nybegynder
29. marts 2004 - 20:12 #9
nja, nu begynder der at ske noget, men som du skrev, kan den ikke se at det er et tal - selvom jeg skriver:

varsFraPHP = new LoadVars();
varsFraPHP.onLoad = function(success){
  if(success){
this.antal = Number(this.antal);
    antal.text = this.antal;
    tal = Math.random(5)*this.antal;
    nb2 =Math.round(tal);
  }
}
varsFraPHP.load("getFileName.php");

den skriver NaN (not a number -går jeg ud fra det betyder?)
Avatar billede mat Nybegynder
29. marts 2004 - 20:24 #10
Det betyder det nemlig :) - læs:

Kommentar: pyroman
29/03-2004 19:53:06

;)
Avatar billede pyroman Nybegynder
29. marts 2004 - 20:31 #11
jeps.. kom lige i tanke om at man ofte får tal ind som strenge...

Koden skal nok se sådan her ud før at det virker med tal:

varsFraPHP = new LoadVars();
varsFraPHP.onLoad = function(success){
  if(success){
    this.antal = Number(this.antal);
    antal.text = this.antal;
    tal = Math.random(5)*this.antal;
  }
}
varsFraPHP.load("getFileName.php");
Avatar billede 13thsky Nybegynder
29. marts 2004 - 22:41 #12
men den kode som jeg skrev (20.12) er jo den samme som den du skrev (20.31).

Den skriver stadig "NaN"
Avatar billede pyroman Nybegynder
29. marts 2004 - 22:55 #13
I tekstfeltet?

Prøv at sætte en:

trace(this.antal);

ind efter if(){ - koden... og se hvad den skriver i output...
Avatar billede 13thsky Nybegynder
29. marts 2004 - 23:03 #14
ja, jeg prøvede at smide et teksfelt ind i samme frame som koden og skrev "tal" i var. Det resulterer i at den skriver "NaN" i tekstfeltet når koden ser således ud:

varsFraPHP = new LoadVars();
varsFraPHP.onLoad = function(success) {
    if (success) {   
        this.antal = Number(this.antal);
        antal.text = this.antal;
        tal = Math.random(5)*this.antal;
    }
};

Når jeg skriver "trace(this.antal);" ind som den første linien i if-sætningen, sker der ikke noget nyt.

//13th Sky
Avatar billede pyroman Nybegynder
29. marts 2004 - 23:06 #15
Skriver den slet ikke noget i output?
Avatar billede mat Nybegynder
29. marts 2004 - 23:07 #16
Hvad sker der hvis du kalder getFileName.php i en browser?
Avatar billede 13thsky Nybegynder
29. marts 2004 - 23:07 #17
jo... NaN
Avatar billede 13thsky Nybegynder
29. marts 2004 - 23:08 #18
så printer den "&antal=232"

(altså uden ")
Avatar billede mat Nybegynder
29. marts 2004 - 23:11 #19
Det burde altså virke - kan du evt uploade en fla? En anden detalje er at Math.random() ikke tager parametre, men det burde bare "fejle" stille?
Avatar billede mat Nybegynder
29. marts 2004 - 23:16 #20
tese: din php fil outputter ikke "&antal=232" men "&antal=232 " - altså med et mellemrum, det kan vist give fejlen.
Avatar billede 13thsky Nybegynder
29. marts 2004 - 23:19 #21
Avatar billede 13thsky Nybegynder
29. marts 2004 - 23:32 #22
kan du finde fejl i den => mat el. pyroman?

Jeg smider 30point

//13th Sky
Avatar billede mat Nybegynder
29. marts 2004 - 23:37 #23
fejlen kan ikke skyldes:

Kommentar: mat
29/03-2004 23:16:43

?
Avatar billede 13thsky Nybegynder
29. marts 2004 - 23:40 #24
Avatar billede 13thsky Nybegynder
29. marts 2004 - 23:41 #25
ja, ok nu står der 0 i stedet for 232, men det er jo irelevant

/13
Avatar billede 13thsky Nybegynder
29. marts 2004 - 23:42 #26
php koden:

<?
$GLOBALS['now'] = gmdate('D, d M Y H:i:s') . ' GMT';
header('Expires: 0'); // rfc2616 - Section 14.21
header('Last-Modified: ' . $GLOBALS['now']);
header('Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
header('Pragma: no-cache'); // HTTP/1.0
?>
<html>
<head><title></title></head>
<body>

  <?
  $count=0;
  for($i=1; $i<=1000; $i++)
  {
  $file = @file("images/0".$i.".jpg", "r");
  if ($file)
  {
  ${"name$count"} = "0".$i;
  $count++;
  }
  }
  print "&antal=".$count;
  ?>

</body>
</html>
Avatar billede mat Nybegynder
29. marts 2004 - 23:45 #27
Hvis jeg bruger parseInt istedet for Number virker det tilsyneladende:

this.antal = parseInt(this.antal);
Avatar billede pyroman Nybegynder
29. marts 2004 - 23:53 #28
Hmm - tjaa - til simple tal burde der jo ikke være nogen forskel... Måske stener flash bare?
Avatar billede 13thsky Nybegynder
29. marts 2004 - 23:55 #29
ja, det var sq det...
tak for kampen (c:

Drop et svar makker...

Forr. hvad gør den der "trace(this.antal);"
Avatar billede mat Nybegynder
29. marts 2004 - 23:56 #30
vi kan vel dele?

trace er til at få informationer ud i testmiljøet.
Avatar billede pyroman Nybegynder
29. marts 2004 - 23:58 #31
Den skriver bare en besked til output vinduet - skide god hvis man skal debugge... ;)
Avatar billede 13thsky Nybegynder
30. marts 2004 - 00:03 #32
takker der

//13th Sky
Avatar billede 13thsky Nybegynder
30. marts 2004 - 00:05 #33
hmmm, kan jeg ikke give flere point når jeg kun har udlovet 15?
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