Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-10-2003, 12:39   #1 (permalink)
got root?
 
Benutzerbild von Cybersmog
 
Registriert seit: Aug 2002
Ort: Bayern
Beiträge: 105
Problem mit mehrdimensionalen Array

Hallo zusammen!

Ich habe hier ein Problem mit einem mehrdimensionalen Array, das durch 2 verschachtelte for Schleifen mit Werten besetzt werden soll. Irgendwie besetzt er nur die 0. Ebene und macht danach nix mehr:

ActionScript:
  1. var array = new Array(new Array());
  2.  
  3. for (var i=0; i<10; i++) {
  4.     for (var j=0; j<10; j++) {
  5.         array[i][j] = j;
  6.     }
  7. }
  8.  
  9. trace(array[0][0]); // ergibt 0
  10. trace(array[0][1]); // ergibt 1
  11. trace(array[1][0]); // ergibt undefined, sollte aber 0 sein
  12. trace(array[1][1]); // ergibt undefined, sollte aber 1 sein
  13.  

Hab ich da was falsch verstanden oder woran liegt der Fehler? Hat jemand eine Idee?

Danke
Peter
__________________
[Tutorial] PEAR Installation bei Shared Hosting Providern

There are 10 types of people in the world: Those who understand binary, and those who don't ...
Cybersmog ist offline   Mit Zitat antworten
Alt 21-10-2003, 12:47   #2 (permalink)
Neuer User
 
Benutzerbild von Deanna
 
Registriert seit: Sep 2003
Beiträge: 104
Versuch's mit:
ActionScript:
  1. var array = new Array(new Array());
  2.  
  3. for (var i=0; i<10; i++) {
  4.         for (var j=0; j<10; j++) {
  5.                 array = j;
  6.         }
  7. }
Deanna ist offline   Mit Zitat antworten
Alt 21-10-2003, 12:49   #3 (permalink)
Neuer User
 
Benutzerbild von :: RK ::
 
Registriert seit: Jan 2002
Ort: Umgebung Stuttgart
Beiträge: 5.412
hi,

ich glaub du musst dein Array anders definieren:
ActionScript:
  1. ArrDim1 = new Array();
  2. ArrDim1 = new Array();
  3. arr = [ArrDim1, ArrDim1];
  4. //
  5. for (i=0; i<10; i++) {
  6.     for (j=0; j<10; j++) {
  7.         arr[i][j] = j;
  8.     }
  9. }
  10. trace(arr[0][0]);
  11. trace(arr[0][1]);
  12. trace(arr[1][0]);
  13. trace(arr[1][1]);
so sollte es funzen.
__________________
Das Glück im Leben hängt von den guten Gedanken ab, die man hat.

Easing_Equations / Flash Kontaktformular / FlashPlugin W3C konform / Nützliche Beiträge zu FAQs
:: RK :: ist offline   Mit Zitat antworten
Alt 21-10-2003, 12:59   #4 (permalink)
got root?
 
Benutzerbild von Cybersmog
 
Registriert seit: Aug 2002
Ort: Bayern
Beiträge: 105
Zitat:
Geschrieben von Deanna
Versuch's mit:
ActionScript:
  1. var array = new Array(new Array());
  2.  
  3. for (var i=0; i<10; i++) {
  4.         for (var j=0; j<10; j++) {
  5.                 array = j;
  6.         }
  7. }
Deanna, dein Versuch klappt nicht. Man kann einem Array nicht einfach so einen Wert zuweisen.

RK, dein Beispiel klappt einwandfrei. Dann muss ich halt nur die Definition des Arrays etwas "aufwendiger" machen. Vielen Dank für die schnelle Hilfe, ich war schon am verzweifeln

Gruß
Peter

P.S. das mit dem Fehler hatte ich schon gefunden
__________________
[Tutorial] PEAR Installation bei Shared Hosting Providern

There are 10 types of people in the world: Those who understand binary, and those who don't ...

Geändert von Cybersmog (21-10-2003 um 13:00 Uhr)
Cybersmog ist offline   Mit Zitat antworten
Alt 21-10-2003, 12:59   #5 (permalink)
Neuer User
 
Benutzerbild von :: RK ::
 
Registriert seit: Jan 2002
Ort: Umgebung Stuttgart
Beiträge: 5.412
hi,

sorry da ist ein kleiner fehler drinn:
das sollte heißen, ArrDim1 und ArrDim2

jetzt aber:
ActionScript:
  1. ArrDim1 = new Array();
  2. ArrDim2 = new Array();
  3. arr = [ArrDim1, ArrDim2];
  4. //
  5. for (i=0; i<10; i++) {
  6.         for (j=0; j<10; j++) {
  7.                 arr[i][j] = j;
  8.         }
  9. }
  10. trace(arr[0][0]);
  11. trace(arr[0][1]);
  12. trace(arr[1][0]);
  13. trace(arr[1][1]);



gern geschehen
__________________
Das Glück im Leben hängt von den guten Gedanken ab, die man hat.

Easing_Equations / Flash Kontaktformular / FlashPlugin W3C konform / Nützliche Beiträge zu FAQs

Geändert von :: RK :: (21-10-2003 um 13:00 Uhr)
:: RK :: ist offline   Mit Zitat antworten
Alt 21-10-2003, 13:20   #6 (permalink)
got root?
 
Benutzerbild von Cybersmog
 
Registriert seit: Aug 2002
Ort: Bayern
Beiträge: 105
Ähm, jetzt muss ich doch nochmal nachfragen: warum geht das nicht analog bei einem 3 dimensionalen Array?

ActionScript:
  1. var arr1 = new Array();
  2. var arr2 = new Array();
  3. var arr3 = new Array();
  4. var arr = [arr1, arr2, arr3];
__________________
[Tutorial] PEAR Installation bei Shared Hosting Providern

There are 10 types of people in the world: Those who understand binary, and those who don't ...

Geändert von Cybersmog (21-10-2003 um 13:23 Uhr)
Cybersmog ist offline   Mit Zitat antworten
Alt 21-10-2003, 14:33   #7 (permalink)
Neuer User
 
Benutzerbild von :: RK ::
 
Registriert seit: Jan 2002
Ort: Umgebung Stuttgart
Beiträge: 5.412
wie sieht denn dein komplettes Script aus ?

hier mal ein kleines beispiel:
ActionScript:
  1. text0 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
  2. text1 = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19];
  3. text2 = [20, 21, 22, 23, 24, 25, 26, 27, 28, 29];
  4. //
  5. var arr1 = new Array();
  6. var arr2 = new Array();
  7. var arr3 = new Array();
  8. //
  9. var arr = [arr1, arr2, arr3];
  10. //
  11. for (i=0; i<3; i++) {
  12.     for (j=0; j<10; j++) {
  13.         arr[i][j] = _root["text"+i][j];
  14.     }
  15. }
  16. //
  17. trace("1.Dimension: "+arr[0]);
  18. trace("2.Dimension: "+arr[1]);
  19. trace("3.Dimension: "+arr[2]);


raus kommt das hier:

1.Dimension: 0,1,2,3,4,5,6,7,8,9
2.Dimension: 10,11,12,13,14,15,16,17,18,19
3.Dimension: 20,21,22,23,24,25,26,27,28,29
__________________
Das Glück im Leben hängt von den guten Gedanken ab, die man hat.

Easing_Equations / Flash Kontaktformular / FlashPlugin W3C konform / Nützliche Beiträge zu FAQs

Geändert von :: RK :: (21-10-2003 um 14:39 Uhr)
:: RK :: ist offline   Mit Zitat antworten
Alt 21-10-2003, 15:09   #8 (permalink)
got root?
 
Benutzerbild von Cybersmog
 
Registriert seit: Aug 2002
Ort: Bayern
Beiträge: 105
Naja, das ganze ist natürlich etwas komplizierter. Ich lese Daten aus einer XML Datei aus und will sie in Arrays zwischenspeichern:

ActionScript:
  1. var XML_obj = new XML();
  2. XML_obj.ignoreWhite = true;
  3. XML_obj.onLoad = function() {
  4.     var aFelder1 = new Array();
  5.     var aFelder2 = new Array();
  6.     var aFelder = [aFelder1, aFelder2];
  7.     var aBilder1 = new Array();
  8.     var aBilder2 = new Array();
  9.     var aBilder3 = new Array();
  10.     var aBilder = [aBilder1, aBilder2, aBilder3];
  11.    
  12.     XML_felder = this.firstChild.childNodes;
  13.     // Anzahl der Felder ermitteln
  14.     _root.felder = XML_felder.length;
  15.     // für jedes Feld Werte in Array lesen
  16.     for (var k=0; k<XML_felder.length; k++) {
  17.         XML_felder_werte = XML_felder[k].childNodes;
  18.         // Titel für Feld ermitteln
  19.         aFelder[k]['titel'] = XML_felder_werte[0].firstChild.nodeValue;
  20.         aFelder[k]['sum_bilder'] = XML_felder_werte.length - 1;
  21.         for (var j=1; j<XML_felder_werte.length; j++) {
  22.             XML_bild = XML_felder_werte[j].childNodes;
  23.             // Beschreibung und URL für Einzelbilder ermitteln
  24.             trace("Bild"+j+" Beschreibung: "+XML_bild[0].childNodes[0].nodeValue);
  25.             trace("Bild"+j+" URL: "+XML_bild[1].childNodes[0].nodeValue);
  26.             aBilder[k][j]['beschreibung'] = XML_bild[0].childNodes[0].nodeValue;
  27.             aBilder[k][j]['url'] = XML_bild[1].childNodes[0].nodeValue;
  28.         }
  29.     }
  30.     trace(aBilder[0][1]['beschreibung']);
  31. }
  32. XML_obj.load(xmlsrc);

Die Zeile trace(aBilder[0][1]['beschreibung']); am Ende des Skripts sollte eigentlich Text ausgeben, aber es kommt nur undefined
Die traces in der for Schleife geben den richtigen Text aus, also muss es an dem Array liegen.
__________________
[Tutorial] PEAR Installation bei Shared Hosting Providern

There are 10 types of people in the world: Those who understand binary, and those who don't ...
Cybersmog ist offline   Mit Zitat antworten
Alt 21-10-2003, 15:22   #9 (permalink)
Neuer User
 
Benutzerbild von :: RK ::
 
Registriert seit: Jan 2002
Ort: Umgebung Stuttgart
Beiträge: 5.412
wenn ich das mal aufschlüsseln darf:
ActionScript:
  1. trace(aBilder[0][1]['beschreibung']);
also du tracest das Array aBilder, unzwar willst du die Daten aus:
der 1.Dimension ( das hier: [0] )
dem 2.Index der 1.Dimension ( das hier: [1] )

und was kommt dann ???
Was möchtest du mit 'beschreibung' tracen???


Vielleicht kannst du mal deine XML datei mit hoch laden, damit ich
das mal testen kann.
__________________
Das Glück im Leben hängt von den guten Gedanken ab, die man hat.

Easing_Equations / Flash Kontaktformular / FlashPlugin W3C konform / Nützliche Beiträge zu FAQs

Geändert von :: RK :: (21-10-2003 um 15:24 Uhr)
:: RK :: ist offline   Mit Zitat antworten
Alt 21-10-2003, 15:40   #10 (permalink)
got root?
 
Benutzerbild von Cybersmog
 
Registriert seit: Aug 2002
Ort: Bayern
Beiträge: 105
trace(aBilder[0][1]['beschreibung']); soll in diesem Fall z.B. "Kunde 1" ausgeben.

Die XML Datei habe ich mal angehängt.
Angehängte Dateien
Dateityp: zip default.zip (354 Bytes, 2x aufgerufen)
__________________
[Tutorial] PEAR Installation bei Shared Hosting Providern

There are 10 types of people in the world: Those who understand binary, and those who don't ...
Cybersmog ist offline   Mit Zitat antworten
Alt 21-10-2003, 15:48   #11 (permalink)
Neuer User
 
Benutzerbild von :: RK ::
 
Registriert seit: Jan 2002
Ort: Umgebung Stuttgart
Beiträge: 5.412
ok, ich schau's mir mal an und geb dir bescheid.
__________________
Das Glück im Leben hängt von den guten Gedanken ab, die man hat.

Easing_Equations / Flash Kontaktformular / FlashPlugin W3C konform / Nützliche Beiträge zu FAQs
:: RK :: ist offline   Mit Zitat antworten
Alt 21-10-2003, 16:05   #12 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Eine ganz andere, aber manchmal auch sinnvolle Lösung wäre es, gar keine Arrays zu benutzen, sondern Funktionen, die dir den jeweiligen Wert direkt aus dem XML auslesen.

ActionScript:
  1. function getTitel( k){
  2.    return XML_obj...[k]...nodeValue
  3. }
  4.  
  5. function getBeschreibung( k, j){
  6.    return XML_obj....[k]...[j]...nodeValue
  7. }
An den Stellen mit den Punkten musst du dann natürlich den richtigen Pfad einsetzen.
Vielleicht könntest du dir so das ganze Umwandeln sparen.

mfg .r
bokel ist offline   Mit Zitat antworten
Alt 21-10-2003, 16:19   #13 (permalink)
Neuer User
 
Benutzerbild von :: RK ::
 
Registriert seit: Jan 2002
Ort: Umgebung Stuttgart
Beiträge: 5.412
hi,

also, ehrlich gesagt, hab ich mich mit XML in Verbindung mit Flash
noch nicht so richtig auseinandergesetzt. Kann also mit deinem
Vorschlag nicht wirklich was anfangen.
__________________
Das Glück im Leben hängt von den guten Gedanken ab, die man hat.

Easing_Equations / Flash Kontaktformular / FlashPlugin W3C konform / Nützliche Beiträge zu FAQs
:: RK :: ist offline   Mit Zitat antworten
Alt 21-10-2003, 16:34   #14 (permalink)
got root?
 
Benutzerbild von Cybersmog
 
Registriert seit: Aug 2002
Ort: Bayern
Beiträge: 105
Das Problem für mich ist, das ich nicht sofort alle Werte aus dem XML File nutzen will sondern erst beim Klick auf einen entsprechenden Button ein Bild weiterspringen will. Deshalb wollte ich die Werte in einem Array zwischenspeichern.
__________________
[Tutorial] PEAR Installation bei Shared Hosting Providern

There are 10 types of people in the world: Those who understand binary, and those who don't ...
Cybersmog ist offline   Mit Zitat antworten
Alt 21-10-2003, 16:36   #15 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Vom Ergebnis her ist es ja das gleiche, ob du erst alle Werte in ein Array kopierst und dann später daraus liest, oder ob du dir das Kopieren sparst und die Werte direkt ausliest, wenn du sie brauchst.

Es kommt halt darauf an, wie oft du die Werte auslesen möchtest. Wenn es sehr oft passiert, dann kann das Kopieren Sinn machen. Wenn es nur ein paar Mal passiert, dann machen eher die Funktionen Sinn, weil man nicht diese zusaetzlichen Arrays rumliegen hat.

Du könntest die Funktionen sogar an das XML_obj zuweisen, dann kannst du per this direkt auf das Objekt zugreifen.

Edit:
ich habe dein Posting jetzt erst gesehen, Cybersmog. In dem Fall würde ich die Funktionen vorziehen. Dann brauchst du nur die aktuelle Position speichern ( aber das musst du bei einem Array ja auch)

Dann kannst du überall, wo du jetzt aBilder[k][j]['beschreibung'] benutzt einfach die Funktion XML_obj.getBeschreibung(k,j) aufrufen.


mfg r.
bokel 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 04:34 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele