Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-09-2003, 16:21   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 18
Question Herausforderung für Flashperten!! Parser, 5-dim. Navigation

Hallo!
Ich habe ein riesen Problem und bin schon total verzweifelt!
Hoffentlich könnt ihr mir weiterhelfen.

Ich bin dabei, eine verschachtelte Navigation (Menütiefe: 5) auszulesen
und diese durch Flash auf den Screen zu bringen.

Dazu baue ich eine Art Parser, der mir die Struktur (durch Tabs und ~ getrennt)
in ein 5-dimensionales Array konvertiert.

Manche meinen jetzt bestimmt, ein 2-dimensionales hätte es auch getan, allerdings
würde dadurch die spätere Ausgabe viel schwieriger werden.

Es ist nämlich geplant, beim Drücken auf einen Menüpunkt alle nachfolgenden "auszuklappen".
Bei einem zweidimensionalen Array müsste ich dann jedesmal überprüfen, wieviele Unterpunkte
in einem "Paket" stecken.
Bei der Mehrfach-Array-Methode wüsste ich das einfach durch "array.length".

Ich habe schon etwas programmiert, allerdings funzt das noch nicht richtig
(Bei der Ausgabe vertauscht er spalte 2 mit 1)

BITTE BITTE helft mir weiter!
Danke im voraus!

P.S.: Zum richtigen Betrachten des Codes in Flash solltet Ihr übrigens in der Skript-
Ansicht eine Monotype-Schrift, wie Lucida_Console benutzen.


ActionScript:
  1. spalten = [];
  2. anz = [];
  3.  
  4. function einlesen(zeile){
  5.         //// Zeile für Zeile, String für String auslesen
  6.         // wenn tab   : eine spalte weiter (spalte++;)
  7.         // wenn ~     : ein zeichen weiter
  8.        
  9.        
  10.         spalte = 1;
  11.         // Zeichen für Zeichen vorwärts:
  12.         //  mp.slice(-1) ====== letztes element
  13.         for (i=0; i<= zeile.length; i++){
  14.                 if (zeile.substr(i,1) <> "~")
  15.                 {
  16.                         // Neue Spalte:
  17.                         if ((zeile.substr(i,1) == "\t") or (i == zeile.length))
  18.                         {
  19.                                 if (wort_temp <>"")
  20.                                 {
  21.                                         anz[1] = _root.mp.length-1; // Anzahl der Elemente innerhalb eines arrays
  22.                                         anz[2] = _root.mp[anz[1]].length-1;
  23.                                         anz[3] = _root.mp[anz[1]]._root.mp[anz[2]].length-1;
  24.                                         if (spalte == 1)
  25.                                         {
  26.                                                 if (_root.mp[0] == undef) {_root.mp = new Array();}
  27.                                                 _root.mp.push(wort_temp);
  28.                                         }
  29.                                         if (spalte == 2)
  30.                                         {
  31.                                                 if (_root.mp[anz[1]][0] == undef) {_root.mp[anz[1]] = new Array();}
  32.                                                 _root.mp[anz[1]].push(wort_temp);
  33.                                         }
  34.                                         if (spalte == 3)
  35.                                         {
  36.                                                 //  usw
  37.                                                 //  usw
  38.                                         }////if (spalte == 3)
  39.                                        
  40.                                         if (spalte == 4)
  41.                                         {
  42.                                         }////if (spalte == 4)
  43.                                         if (spalte == 5)
  44.                                         {
  45.                                         }////if (spalte == 5)
  46.                                         wort_temp = "";
  47.                                 }
  48.                                 spalte++;
  49.                         }
  50.                         else
  51.                         // Wort zusammensetzen
  52.                         {
  53.                                 wort_temp+= zeile.substr(i,1);
  54.                         }
  55.                 }
  56.         }
  57. }
  58.  
  59. //        spalte 1          spalte 2    spalte 3    spalte 4
  60. einlesen("mp[0]~~~~~~~~~~~~ mp[0][0] mp[0][0][0]");
  61. einlesen("~~~~~~~~~~~~~~~~~ ~~~~~~~~ mp[0][0][1]");
  62. einlesen("~~~~~~~~~~~~~~~~~ ~~~~~~~~ mp[0][0][2]");
  63. einlesen("~~~~~~~~~~~~~~~~~ ~~~~~~~~ mp[0][0][3]");
  64. einlesen("~~~~~~~~~~~~~~~~~ ~~~~~~~~ mp[0][0][4]");
  65. einlesen(" mp[1]~~~~~~~~~~~~    mp[1][0]    mp[1][0][0] mp[1][0][0][0]");
  66. einlesen(" ~~~~~~~~~~~~~~~~~    ~~~~~~~~    ~~~~~~~~~~~ mp[1][0][1][1]");
  67. einlesen(" ~~~~~~~~~~~~~~~~~    ~~~~~~~~    ~~~~~~~~~~~ mp[1][0][2][2]");
  68. einlesen(" ~~~~~~~~~~~~~~~~~    mp[1][1]    mp[1][1][0] mp[1][1][0][0]");
  69. einlesen(" ~~~~~~~~~~~~~~~~~    ~~~~~~~~    ~~~~~~~~~~~ mp[1][1][0][1]");
  70.  
  71. trace("spalte 1:");
  72. trace(_root.mp[0]);
  73. trace(_root.mp[1]);
  74. trace("spalte 2:");
  75. trace(_root.mp[0][0]);
  76. trace(_root.mp[1][0]);
  77. trace("spalte 3:");
  78. trace(_root.mp[0][0][0]);
  79. trace(_root.mp[1][0][0]);
Neutrino ist offline   Mit Zitat antworten
Alt 11-09-2003, 18:49   #2 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 18
Hallo, nochmal,


habe nochmal ein bisschen rumprobiert.
Es scheint ein grundsätzliches Problem mit dem Array zu sein,
siehe folgendes Progrämmchen:

ActionScript:
  1. mp = [[]];
  2.  
  3. mp[0][0] = "[0][0]";
  4. trace (mp[0][0]); // Ausgabe: [0][0], Super, wunderbar!
  5.  
  6. mp[0] = 1;
  7. trace (mp[0]); // Ausgabe: 1, so wie´s sein soll
  8.  
  9. trace (mp[0][0]); // Selber Befehl wie Zeile 4, Ausgabe: undefined, Sch***
  10.  

Ergo: Wird mp[0] als eindimensionales Array angesprochen, wird die dahinter
liegende 2-dimensionalen (bzw. n-dimensionalen) Werte überschrieben!!!

Ich dachte, ich könnte die mehrdimensionale Struktur nach und nach aufbauen,
also bei jedem Menüpunkt, den ich einparse, hinzuzufügen.
Anscheinend werden aber dadurch einige Punkte wieder gelöscht.

Kann das sein? Stelle ich mich nur dämlich an? Welche andere Möglichkeit gäbe es?

Könnte ich evtl. die Punkt-Notation nutzen?
Also sowas wie: _root.mp.spalte1.spalte2.spalte3.usw...??

Ein verzweifelter Newbie :-)
Neutrino ist offline   Mit Zitat antworten
Alt 11-09-2003, 18:57   #3 (permalink)
Hirnverbrannt
 
Benutzerbild von NastyFrog
 
Registriert seit: Aug 2001
Ort: AUSTRIA
Beiträge: 2.020
Also wenn du aufbauen willst, dann nimm push(wert). Dann werden die Werte hinten angereiht. arr[0].push("hallo")
__________________
50 Seiten hardcore ActionScript von den Grundlagen bis zu 3D Darstellungen.... eben eine Abendlektüre.

Dogs fucked the Pope, no fault of mine. Watch out! ... Why money? My name is Brinks; I was born ... born? Get sheep over side ... women and children to armored car ... orders from Captain Zeep.(Hunter S. Thompson)
NastyFrog ist offline   Mit Zitat antworten
Alt 11-09-2003, 22:17   #4 (permalink)
Bugfixer
 
Registriert seit: Nov 2001
Ort: #
Beiträge: 572
Ich glaub du stellst dich nur ...

schau mal die ausgabe:
ActionScript:
  1. mp = [[]];
  2.  
  3. mp[0][0] = "[0][0]";
  4. trace (mp[0][0]); // Ausgabe: [0][0], Super, wunderbar!
  5.  
  6. trace( mp[0] );

mit ... = 1 würdest du ein array wieder überschreiben
secp ist offline   Mit Zitat antworten
Alt 12-09-2003, 10:54   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 18
Hallo!

Vielen Dank an alle!
Ich habe mich jetzt damit abgefunden, das ganze doch in einer 2d-struktur zu machen.

gruß,
neutrino
Neutrino 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 15:05 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele