Avatar billede donslund Nybegynder
04. oktober 2003 - 14:38 Der er 12 kommentarer og
2 løsninger

omdanne database værdier til array i Flash

Hvordan laver jeg de data jeg har i min database om til et array i Flash? Skal jeg gøre det før eller efter de kommer over i Flash?
Avatar billede thulstrup Nybegynder
04. oktober 2003 - 14:56 #1
Det skal gøres i flash. Du kan f.eks. gøre som i eksemplet her, hvor hver nyhed er adskilt af et komma. minVar er den streng der sendes til flash.

minVar = "Nyhed nummer 1,Nyhed nummer 2,Nyhed nummer 3";
minArray = new Array();
minArray = minVar.split(",");
for (var i = 0; i<minArray.length; i++) {
    trace(minArray[i]);
}
Avatar billede donslund Nybegynder
04. oktober 2003 - 15:10 #2
Men hvis jeg nu har min db, som indeholder tallene 1 2 3 4 5
Dem vil jo så gerne have over i Flash i en variabel der hedder ex. tal

Jeg laver altså den komma-opdelte variabel i php?
Avatar billede thulstrup Nybegynder
04. oktober 2003 - 15:41 #3
Ja lige præcis. Jeg ville gøre det sådan her:

$result = @mysql_query("SELECT * FROM tal");
$count = @mysql_num_rows($result);
if ($result && $count>0){
  $tal = "";
  while($row = mysql_fetch_array($result)){
      $tal .= $row['tal'] . ",";
  }
  print "&tal=" . utf8_encode(stripslashes($tal));
}
Avatar billede alexander_j Nybegynder
04. oktober 2003 - 16:14 #4
Og hvis du har brug for , og andre tegn, så kan du lave en 15 cifret kode til at adskille elementerne fra din database
fx:
$tal .= $row['tal'] . "min15cifretkode";
og i flash:
minArray = minVar.split("min15cifretkode");

Mindre kan nok også gøre det :-)
Avatar billede donslund Nybegynder
05. oktober 2003 - 12:11 #5
Nu kommer variablerne fint ind i Flash, men min DuplivateMovieclip virker ikke helt efter hensigten.

Jeg har et mc med navnet DataContainer. Det indeholder følgende script:

onClipEvent (load) {
    loadVariablesNum ("hentvaegt1.php?", 0);
    minVar = _root.vaegten;
    minArray = new Array();
    minArray = minVar.split(",");
}

og så har jeg et mc med følgende script:

onClipEvent (enterFrame) {
    for (var i = 0; i<_root.DataContainer.minArray.length; i++) {
        duplicateMovieClip(this, "viser".i, i)
    ny_x = (parseInt(_root.DataContainer.minArray[i])-70)*(11.35);
    setProperty("viser"+i, _x, ny_x);
}
}

Burde det sidste MC så ikke blive kopieret i det antal der er i mit array?
Avatar billede mat Nybegynder
05. oktober 2003 - 12:33 #6
well der er nogle problemer med dit script. Du forsøger at duplikere i en enterFrame dvs en gang pr frame i din fps, det bliver til mange movieclips :)

Alt script på et movieclip kopieres med ud på kopierne, nu har du et hav af movieclips der står og kopierer sig selv - det vil ikke tage lang tid at knække playeren :)

Du kan komme uden om ovenstående med _name attributten:

if (this._name == "master") {
//duplikeringskode
}


Iøvrigt skal denne linie:

duplicateMovieClip(this, "viser".i, i)

rettes til

duplicateMovieClip(this, "viser"+i, i);


Det var lige lidt søndagsdebugging, jeg har ikke testet, og kun udpeget det jeg lige fik øje på.

mvh mat
Avatar billede donslund Nybegynder
05. oktober 2003 - 12:57 #7
Det virker ikke. Har det noget at gøre med, at det tager lidt tid inden mine variabler kommer fra php til Flash?
Avatar billede mat Nybegynder
05. oktober 2003 - 13:23 #8
ja, det tager lige et øjeblik. Du kan evt loade dine variabler ind i et movieclip og udføre dit script på data eventhandleren ( onClipEvent(data) )

Så skal din loadvariables lige ændres til:

loadVariables ("hentvaegt1.php?", someClip);

(Hvis du bruger mx kan det gøres endnu lettere)


-mat
Avatar billede donslund Nybegynder
05. oktober 2003 - 13:44 #9
Jeg bruger MX
Avatar billede donslund Nybegynder
05. oktober 2003 - 19:28 #10
Jeg er nødt til at have lidt hjælp. Jeg kan ikke rigtig komme videre. Hvor er det jeg skal skrive de forskellige ting?
Avatar billede mat Nybegynder
05. oktober 2003 - 19:40 #11
noget i denne stil:

l = new LoadVars();
l.onLoad = function(s) {
    if (s) {
        minVar = this.vaegten;
        minArray = new Array();
        minArray = minVar.split(",");
       
        for (var i = 0; i < minArray.length; i++) {
            duplicateMovieClip(someClip, "viser"+i, i); // someClip er navnet på det clip der skal kopieres
            ny_x = (parseInt(minArray[i])-70)*(11.35);
            _root["viser"+i]._x = ny_x;
        }
    }
    else {
        trace("error: no data from php");
    }
}
l.load("hentvaegt1.php");


Det er et framescript og skal bare ligge i frame 1 hvor "someClip" så også skal ligge. Jeg har ikke testet, kun snippet fra tråden og sat ind, så jeg garanterer ikke at der ikke er fejl :)

mvh mat
Avatar billede donslund Nybegynder
05. oktober 2003 - 19:58 #12
Så er alt simpelthen som det skal være. Gider du smide et svar mat?
Avatar billede mat Nybegynder
05. oktober 2003 - 20:04 #13
aaaallrighty then :)

(men nu har de andre jo trods alt svaret på dit oprindelige spørgsmål)
Avatar billede donslund Nybegynder
05. oktober 2003 - 20:09 #14
Ja, okay, så kan I jo dele :-)
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