Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-08-2003, 12:05   #1 (permalink)
Flex Entwickler
 
Registriert seit: Dec 2001
Ort: Walldorf
Beiträge: 21
mehrdimensionales array durchsuchen

ActionScript:
  1. /*
  2. Hi Leute, hab ein großes Problem bei dem ich einfach net weiterkomm.
  3. Falls ihr euch zufällig mit Arrays auskennt könnt ihr ja einfach den
  4. text hier in flash reinkopieren, rumprobieren und debuggen.
  5. Mein Problem ist das ich ein Menu machen will, das schon funktioniert
  6. ich jetzt aber einmal mein Array durchlaufen muss und Variablen
  7. vergleichen muss. Vom Kopf her hab ich schon ein Konzept. Nur bei der
  8. Umsetzung hab ich das Problem dass ich es nicht schaff dynamisch auf
  9. mehrdimensionale Arrays zuzugreifen.
  10. Ich hab euch mal ein Test Arrays zusammengebaut, damit ihr mich auch
  11. versteht.
  12. */
  13.  
  14. // Array
  15.  
  16. test_arr = new Array();
  17. test_arr[0] = new Array();
  18. test_arr[0] = ["eintrag1","eintrag2","eintrag3","eintrag4"];
  19. test_arr[1] = new Array();
  20. test_arr[1] = [new Array(), new Array()];
  21. test_arr[1][0] = ["eintrag5","eintrag6","eintrag7","eintrag8"];
  22. test_arr[1][1] = ["eintrag9","eintrag10","eintrag11","eintrag12"];
  23. test_arr[2] = new Array();
  24. test_arr[2][0] = new Array();
  25. test_arr[2][0][0] = new Array();
  26. test_arr[2][0][0] = ["eintrag13","eintrag14","eintrag15","eintrag16"];
  27. test_arr[2][0][1] = new Object();
  28. test_arr[2][0][1].test1 = "eintrag17";
  29. test_arr[2][0][1].test2 = "eintrag18";
  30. test_arr[2][0][1].test3 = "eintrag19";
  31. test_arr[2][0][1].test4 = "eintrag20";
  32.  
  33. // normaler Trace
  34.  
  35. trace(test_arr[0][0]); // Ausgabe eintrag 1
  36. trace(test_arr[1][1][1]); // Ausgabe eintrag 10
  37. trace(test_arr[1][1][3])// Ausgabe eintrag 12
  38. trace(test_arr[2][0][1].test4); // Ausgabe eintrag20
  39.  
  40. /*
  41. Soweit dürfte noch alles klar sein. Das Problem kommt nur wenn ich z.B
  42. dynamisch tracen will und mir so eine abfrage dynamisch zusammen bauen
  43. will.
  44. z.B. "test_arr" + [0] + [0]
  45. Somit könnte ich dann z.B einfach in einer Schleife alle Einträge des
  46. Arrays und der Unterarrays ausgeben lassen.
  47. Ich hab schon alles mögliche ausprobiert, kriegs aber net hin.
  48. arrayName_var = "test_arr";
  49. i = 1;
  50. j = 1;
  51. k = 3;
  52. abfrage = [i] // hab schon alles ausprobiert ( "["+i+"]" ) alles was geht
  53. abfrage+= [j]
  54. abfrage+= [k]
  55. abfrage_trace = arrayName_var + abfrage_trace;
  56. trace(abfrage_trace);
  57. Das geht aber irgendwie net. Bin am verzweifeln weil es doch eigentlich
  58. gehen müsste.
  59. */
scavanger ist offline   Mit Zitat antworten
Alt 27-08-2003, 12:24   #2 (permalink)
Definitionssache
 
Benutzerbild von dburucu
 
Registriert seit: Apr 2003
Ort: Braunschweig
Beiträge: 2.433
Hiermit kannst du jedes Element durchgehen:

for(var myelement in myarray)
{
}

Hiermit fragst Du ob ein Element um ein Array handelt
typeof(printarray[printelem])

Wenn da Object rauskommt, dann ist das auch ein Array.
Wenn String dann String.

HIER MAL EINE FUNKTION, DER ALLE ARRAYS DURCHGEHT UND AUSGIBT, vergleichbar wie print_r von PHP:

ActionScript:
  1. function print_r(printarray,ebenenindex)
  2. {
  3.     ebenenindex++;
  4.     trace (leerstellen+"Ebene: "+ebenenindex);
  5.     for(var printelem in printarray)
  6.     {
  7.         leerstellen = "";
  8.         leerstellenende = "";
  9.         for(i=0;i<ebenenindex;i++)
  10.         {
  11.             leerstellen += "  ";
  12.             if (i>0) leerstellenende += "  ";
  13.         }
  14.         if (typeof(printarray[printelem]) != "object")
  15.         {
  16.             trace (leerstellen+" "+ebenenindex+" ("+typeof(printarray[printelem])+") ["+printelem+"] = "+printarray[printelem]);
  17.         }
  18.         else
  19.         {
  20.             trace (leerstellen+" "+ebenenindex+" ("+typeof(printarray[printelem])+") ["+printelem+"]");
  21.             print_r(printarray[printelem],ebenenindex);
  22.         }
  23.     }
  24.     trace (leerstellenende+"Ebeneende: "+ebenenindex);
  25. }
dburucu ist offline   Mit Zitat antworten
Alt 27-08-2003, 12:47   #3 (permalink)
Definitionssache
 
Benutzerbild von dburucu
 
Registriert seit: Apr 2003
Ort: Braunschweig
Beiträge: 2.433
zum starten machst du z.B. so:

print_r(test_arr,0);
dburucu ist offline   Mit Zitat antworten
Alt 27-08-2003, 13:02   #4 (permalink)
Flex Entwickler
 
Registriert seit: Dec 2001
Ort: Walldorf
Beiträge: 21
hey danke,

hat alles prima geklappt. muss mich jetzt nur noch ein bisschen durch das script kämpfen und hoff dass ich es dannach auch anwenden kann.

nochmals vielen dank
scavanger ist offline   Mit Zitat antworten
Alt 27-08-2003, 13:04   #5 (permalink)
Definitionssache
 
Benutzerbild von dburucu
 
Registriert seit: Apr 2003
Ort: Braunschweig
Beiträge: 2.433
gern geschehen.

:-)
dburucu ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 22:42 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele