Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-09-2004, 19:30   #1 (permalink)
neuling
 
Registriert seit: Aug 2004
Beiträge: 198
Question 2dimensionalen Array erstellen

Hallo

Hoffentlich kann mir jemand bei dem folgenden Problem helfen. Das Actionscript unten lädt Variablen aus einer Textdatei in 2dimensionales Array,
daß funktioniert auch, das Problem ist damit es funktioniert muss ich vorher ein Array in der richtigen Größe vorerstellen, sonst gehts nämlich nicht. Was beim untenliegenden Beispiel nur ein 5x5 Raster ist ist in Wirklichkeit 70X70, was enorm umständlich ist, Beim erstellen eines Arrays kann man ja die Größe angeben, allerdings nur für eine Dimension, was macht man bei 2 Dimensionen?
Vielen Dank im Voraus

mfg
Clemens



_root.Map = new Array();
Map[0] = [x,x,x,x,x];
Map[1] = [x,x,x,x,x];
Map[2] = [x,x,x,x,x];
Map[3] = [x,x,x,x,x];
Map[4] = [x,x,x,x,x]; //das würde ich mir gern ersparen, vielleicht mit einer :for.. Schleife?


_root.MapParser = new LoadVars();
_root.MapParser.load("TEST.txt");
_root.MapParser.onLoad = function(true) {
if (true) {
for (j=0; j<5; j++) {

txtstring = _root.MapParser["map"+j];
trace("Hauptdurchlauf ="+j);
trace("textstring"+txtstring)
_root.zeile = txtstring.split(",");
trace("zeilenarray"+zeile [0]+zeile [1]+zeile [2]+zeile);


for (n=0; n<5; n++) {
_root.Map [n] [0] = zeile [n];
trace("durchlauf innereSchleife"+n);
trace("Maparray"+Map [n] [0]);
};
};

}
};

P.S.: wie kriegt man seinen Code eigentlich in so ein gelbes Kasterl, wenn ich auf Code einfügen geh wird er zwar auch in einen Kasten und farblich richtig angezeigt aber alles in einer Zeile
Clemenses ist offline   Mit Zitat antworten
Alt 02-09-2004, 20:18   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
"..das würde ich mir gern ersparen, vielleicht mit einer :for.. Schleife?.."
und warum tust du es nicht, wenn du schon weisst wie es geht???

"..wie kriegt man seinen Code eigentlich in so ein gelbes Kasterl.."
äääh hüstel, hüstel, flash stellt das fenster auf die gehirngrösse des jeweiligen users ein :-) (sorry, der musste jetzt einfach sein)

vielleicht öffnest du einmal das "Actionen"-fenster?
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 02-09-2004, 21:19   #3 (permalink)
neuling
 
Registriert seit: Aug 2004
Beiträge: 198
na, so ist wieder nicht, daß mit der For- Schleife ist ja nur ein Ansatz mit dem
ich mir vorstellen könnte daß es möglich ist. Für das einlesen der Textdaten verwende ich ja so eine Schleife, es funktioniert halt nur wenn der Array
schon vorher erstellt ist.
Mit gelbem Kastl hab ich die Hervorhebungsfunktionen für AS vom Flashforum
gemeint und nicht irgendwas in Flash selber, schon gar nicht die "Actionen", denn das ist ja einfach nur ein dummer Anglizismus.
Prinzipiell Seib frag ich mich warum du dir die Mühe machst, überhaupt eine Antwort zu schreiben, wenn du offenbar keine Lust hast dir das Problem überhaupt gescheit durchzulesen geschweige denn etwas konstruktives beizutragen.

mfg
Clemens
Clemenses ist offline   Mit Zitat antworten
Alt 02-09-2004, 21:40   #4 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
@hgseib.... ( )

@clemenses

der hg ist ein guter...


aber zu deiner frage:
du kannst deine inneren arrays in der schleife erstellen und entsprechend füllen:

ActionScript:
  1. _root.Map = [];
  2.  
  3. _root.MapParser = new LoadVars();
  4. _root.MapParser.load("TEST.txt");
  5. _root.MapParser.onLoad = function(true)
  6. {
  7.     if (true)
  8.     {
  9.         for (j=0; j<5; j++)
  10.         {
  11.             _root.Map[j]=[]
  12.             txtstring = this["map"+j];
  13.             _root.zeile = txtstring.split(",");
  14.             for (n=0; n<5; n++)
  15.             {
  16.                 _root.Map[j].push(_root.zeile[n])
  17.             }
  18.         }
  19.     }
  20. };


wenn ich dich recht verstanden habe...
warrantmaster ist offline   Mit Zitat antworten
Alt 03-09-2004, 00:19   #5 (permalink)
neuling
 
Registriert seit: Aug 2004
Beiträge: 198
Smile

Hallo

Danke für die Lösung, Ich habs noch ein bißchen abändern müssen bis es funktioniert hat, vor allem mit der PushtoArrayFunktion bin ich nicht ganz warm geworden, deswegen hab ichs auf meine Methode gemacht.

Ich hab das ganze noch dann erweitert und in eine Funktion verpackt. Vielleicht hat jemand Lust sich das ganze ein bißchen anzuschauen.
Problematisch ist glaub ich vor allem, daß auch wenn ich nur einen anderen Datensatz aus der gleichen Datei lade, immer die ganze Datei geladen werden muss.(Und dann auch noch im Speicher verbleibt wenn ich mich nicht irre?)
Also hier das Script:

function arrayladen (dateiname,arr,punkt,x,y){
trace(dateiname+arr+punkt+x+y);
_root[arr] = new Array();
_root[punkt] = new LoadVars(); //_root[punkt] war vorher _root.MapParser
_root[punkt].load(dateiname);
_root[punkt].onLoad = function(true) {
if (true) {
for (j=0; j<x; j++) {
txtstring = _root[punkt] [punkt+j];
zeile = txtstring.split(",");
for (n=0; n<y; n++) {
_root[arr][j]=[];
_root[arr] [j] [n] = zeile [n];
trace(arr+" koord x:"+j+"y:"+n+"="+_root[arr] [j] [n]);
};
};
};
};
};

arrayladen("TEST.txt","MapArray","map","5","5","da da");
arrayladen("TEST.txt","ObjektArray","obj","5","5", "dudu");
arrayladen("TEST.txt","Highscore","high","1","10") ;

und hier der Inhalt der dazugehörigen Textdatei:

map0=A1,A2,A3,A4,A5&map1=B1,B2,B3,B4,B5&map2=C1,C2 ,C3,C4C5&map3=D1,D2,D3,D4,D5&map4=E1,E2,E3,E4,E5&
obj0=A,A,B,A,A&obj1=A,A,B,A,A&obj2=A,A,B,A,A&obj3= A,A,B,A,A&obj4=A,A,B,A,A&
high0=100,90,80,70,60,50,40,30,20,10& (natürlich ohne Absätze)

mfg
Clemens
Clemenses 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 20:57 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele