Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-04-2006, 08:33   #1 (permalink)
Entscheide Dich
 
Benutzerbild von YesNo
 
Registriert seit: Apr 2003
Ort: Düsseldorf
Beiträge: 218
Mehr dimensionale Arrays und hashes

Ich habe diese Frage ja schon mal aufgeworfen, aber ich bin da nicht mit klar geworden.

1. Ich habe ein assoziatives Array und zwar:

Code:
felDIM = new Array();

felDIM={x: fillin_txt._x, y: fillin_txt._y, laenge: fillin_txt._width, lpos: links_, rpos: rechts_, txt: fillin_txt.text};
und 2. ein dreidim. Array
Code:
felder = new Array(new Array(new Array()));
jetzt will ich in felder[1][1]=felDIM zuweisen! Und mit

felder[1][1].x den Wert auslesen. das bekomme ich aber nicht hin!!

Irgendwas mach' ich da falsch. Wie macht man das bloß richtig?

Michael
YesNo ist offline   Mit Zitat antworten
Alt 30-04-2006, 09:00   #2 (permalink)
Nagelneuer User
 
Benutzerbild von hazy fantazy
 
Registriert seit: Dec 2005
Beiträge: 924
Hallo YesNo,

du musst deine Arrays mit Schleifen erzeugen.
So wie du es jetzt machst, hast du ein Array, dass nur an der ersten Stelle ein Array enthält, das selbst wieder ein Array an der ersten Stelle enthält. Also felder[0][0] ist ein Array wie gewünscht, aber alle anderen Einträge wie z.B. felder[0][1] oder felder[1][0] sind keine Arrays.

mfg. h
__________________
The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D

Geändert von hazy fantazy (30-04-2006 um 09:02 Uhr)
hazy fantazy ist offline   Mit Zitat antworten
Alt 30-04-2006, 09:15   #3 (permalink)
Entscheide Dich
 
Benutzerbild von YesNo
 
Registriert seit: Apr 2003
Ort: Düsseldorf
Beiträge: 218
Verstehe!
Aber wie soll die Schleife aussehen.
Wenn ich im ersten Array keine Werte stehen habe.
Also Array felder[0][0] ist leer bzw 0 aber
felder[1][0] (z.B.) hat das o.g. Array felDIM {...}.
Wenn ich dem Array in felder[0][0] Hash - Werte zuweise geht's aber bei den anderen nicht. ????

Michael
YesNo ist offline   Mit Zitat antworten
Alt 30-04-2006, 09:52   #4 (permalink)
AGo
MisterStandalone
 
Registriert seit: Feb 2003
Beiträge: 91
Hi Michael,

Du solltest auf jedenfall erstmal alle Arrays erzeugen, die "irgendwie" sein könnten, ala

ActionScript:
  1. var maxL1 = 5;
  2. var maxL2 = 5;
  3. var maxL3 = 5;
  4. //
  5. var felder = new Array();
  6. //
  7. for (var i = 0; i<=maxL1; i++) {
  8.     felder[i] = new Array();
  9.     for (var m = 0; i<=maxL2; m++) {
  10.         felder[i][m] = new Array();
  11.         for (var n = 0; i<=maxL3; n++) {
  12.             felder[i][m][n] = new Array();
  13.         }
  14.     }
  15. }

damit hast du erstmal überall leere Arrays zur Verfügung.

Dein Code

ActionScript:
  1. felDIM = new Array();
  2.  
  3. felDIM={x: fillin_txt._x, y: fillin_txt._y, laenge: fillin_txt._width, lpos: links_, rpos: rechts_, txt: fillin_txt.text};

erzeugt gar kein Array im Endeffekt:
Zuerst machst du mit felDIM ein neues leeres Array, soweit so gut.
Aber dann überschreibst du mit felDIM={...} dieses Array mit einem Objekt, da die geschweiften Klammern ein neues Objekt erzeugen.

Wenn felDIM ein assoziatives Array sein soll (was ja im Endeffekt aufs selbe rauskommt) müsstest du felDIM so belegen

ActionScript:
  1. var felDIM = new Array();
  2.  
  3. vat temp_obj = {x: fillin_txt._x, y: fillin_txt._y, laenge: fillin_txt._width, lpos: links_, rpos: rechts_, txt: fillin_txt.text};
  4.  
  5. for (var each in temp_obj)
  6. {
  7. felDIM[each] = temp_obj[each];
  8. };
  9.  
  10. trace (felDIM["txt"]); //was immer auch in fillin_txt steht,...
  11.  

hth


p.s: Schön auch mal nicht in Englisch zu schreiben
AGo ist offline   Mit Zitat antworten
Alt 30-04-2006, 11:22   #5 (permalink)
Entscheide Dich
 
Benutzerbild von YesNo
 
Registriert seit: Apr 2003
Ort: Düsseldorf
Beiträge: 218
Danke AGo

soweit so gut.

jetzt habe ich aber ein 3D Array dem ich in jedem n und m

arr3[n][m] ein hash also temp_obj zuweisen will. So das ich dann z.B.

arr3[1][1].txt abfragen kann! Wie du da oben tem_obj= {...} zugewiesen hast, so müßte ich doch auch arr3[1][1]={...} zuweisen können.

und dann auch arr3[1][1].txt abfragen!

Aber wieso geht das nicht?

Mi
YesNo ist offline   Mit Zitat antworten
Alt 30-04-2006, 11:55   #6 (permalink)
Entscheide Dich
 
Benutzerbild von YesNo
 
Registriert seit: Apr 2003
Ort: Düsseldorf
Beiträge: 218
Ich hab mal folgendes gemacht.

Code:
felDIM = new Array(); felDIM={x: fillin_txt._x, y: fillin_txt._y, laenge: fillin_txt._width, lpos: links_, rpos: rechts_, txt: fillin_txt.text};
und dann felder[0][1]=felDIM;

dann kann ich z.B. felder[0][1].txt abfragen!

Wenn ich haber felder[1][0]=felDIM; definiere, dann bekomme ich mit
felder[1][0].txt aber undefined heraus!!!

Und das ist das Ende der Fahnenstange

Michael
YesNo ist offline   Mit Zitat antworten
Alt 30-04-2006, 11:59   #7 (permalink)
AGo
MisterStandalone
 
Registriert seit: Feb 2003
Beiträge: 91
wenn du ein Array x[n][m] hast ist es zweidimensional.

Das Objekt an index n in x ist ein array, und das objekt an index m im array x[n] währe dann dein Objekt.

ich ahb dir mal eine FLA angehängt (F8) die dir hoffentlich weiterhilft,
sie erzeugt ein kleines Schachfeld, udn belegt ein feld mit einer Figur ("X")
Angehängte Dateien
Dateityp: zip spielfeld.zip (5,1 KB, 10x aufgerufen)
AGo ist offline   Mit Zitat antworten
Alt 30-04-2006, 12:07   #8 (permalink)
Entscheide Dich
 
Benutzerbild von YesNo
 
Registriert seit: Apr 2003
Ort: Düsseldorf
Beiträge: 218
Danke AGo
aber ich hab kein Flash 8 kannst Du es mir in Flash MX2004 exportiern?

Mi
YesNo ist offline   Mit Zitat antworten
Alt 30-04-2006, 12:10   #9 (permalink)
AGo
MisterStandalone
 
Registriert seit: Feb 2003
Beiträge: 91
Aber sicher, here you go.

Die fla ist sogar 30kb kleiner

André
Angehängte Dateien
Dateityp: zip spielfeld.zip (4,6 KB, 6x aufgerufen)
AGo 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:41 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele