Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-01-2004, 14:11   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 109
arrays dynamisch erzeugen

hallo,

kurze syntax-frage:

ich möchte dynamisch arrays erzeugen diese auch
unterschiedlich benennen.

ist dies hier richtig? syntax wird von flash als richtig
erkannt. aber ist es auch inhaltlich richtig?

ActionScript:
  1. _root["arr_UP_UP_namen"+z[w]] = bla;

danach müßte ich es mir doch über

ActionScript:
  1. trace(arr_UP_UP_namen0);

im trace ausgeben lassen können!?

oder???

Geändert von toggle (28-01-2004 um 14:18 Uhr)
toggle ist offline   Mit Zitat antworten
Alt 28-01-2004, 14:19   #2 (permalink)
Flash-Wüstling
 
Benutzerbild von pheidrias
 
Registriert seit: Dec 2001
Ort: Halle/Saale
Beiträge: 4.300
sofern das trace in _root geschieht und
trace(z[w]); "0" und du auch wirklich eine Zuweisung hast :
ActionScript:
  1. _root["arr_UP_UP_namen"+z[w]]="";
  2. trace(z[w]);
  3. trace(_root.arr_UP_UP_namen0);

tanti saluti,
pheidrias
__________________
Ehrlich währt am LÄNGSTEN !
pheidrias ist offline   Mit Zitat antworten
Alt 28-01-2004, 14:31   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 109
na ich glaub, da liegt doch ein fehler bei mir!?

ich möchte folgende array-namen:

"arr_UP_UP_namen" mit der Erweiterung z (ist eine Zahl)
macht also:

arr_UP_UP_namen0
arr_UP_UP_namen1
arr_UP_UP_namen2
...usw

das "w" bezeichnet die stelle im array.

also doch eher:
ActionScript:
  1. _root[["arr_UP_UP_namen"+z][w]] = xmlbaum-bla;
anstatt:
ActionScript:
  1. _root["arr_UP_UP_namen"+z[w]] = xmlbaum-bla;
toggle ist offline   Mit Zitat antworten
Alt 28-01-2004, 14:57   #4 (permalink)
Flash-Wüstling
 
Benutzerbild von pheidrias
 
Registriert seit: Dec 2001
Ort: Halle/Saale
Beiträge: 4.300
Was ist jetzt dein Array ?
w
z oder w ?

z ist laut deiner Beschreibung entweder ein Array (z=[0,1,2,3]; ) oder einfach nur ein Zahl ?

Die Frage ist dann : Wo steckt dein Array ??

Wenn ich das richtig sehe, ist z gar keine Variable bei dir sondern nur eine Idee ?

ActionScript:
  1. _root[["arr_UP_UP_namen"+w]] = xmlbaum-bla;

Damit weist du den Variablen _root.arr_UP_UP_namen0 usw. die xmlbäume zu...

tanti saluti,
pheidrias
__________________
Ehrlich währt am LÄNGSTEN !
pheidrias ist offline   Mit Zitat antworten
Alt 28-01-2004, 17:14   #5 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
also, m.E. müsste das so aussehen:

_root["arr_UP_UP_namen"+z][w] = bla;

D.h. im w-ten Index des Arrays arr_UP_UP_namen0 wird bla gespeichert.
Das geht aber nur, wenn arr_UP_UP_namen0 vorher existiert hat...(is mir schwindelig )

_root["arr_UP_UP_namen"+z] = new Array();
_root["arr_UP_UP_namen"+z][w] = bla;

tuts das?

Grüße
Sascha

PS: meeting again, pheidrias
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 29-01-2004, 08:09   #6 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 109
hallo pheidrias, hallo ludabruda,

@pheidrias: sorry, hab wohl nicht verständlich genug erklärt.
aber trotzdem danke.

@ludabruda: datt war wohl die lösung ...danke.





eine kleine frage hab ich trotzdem noch:
da ich ja nun die arrays innerhalb einer for-schleife anlege
und mit daten fülle, sind diese arrays ausserhalb dieser
for schleife nicht bekannt.

wenn ich ausserhalb
ActionScript:
  1. _root["arr_UP_UP_namen"+z] = new Array();
angebe, wird natürlich z nicht erkannt.
habe mal ganz konkret
ActionScript:
  1. arr_UP_UP_namen0 = new Array();
vor die for-schleife gesetzt, aber auch das wird nicht erkannt.

ich möchte eben gern eine funktion ausserhalb der for schleife
setzten, die mit den arrays arbeiten soll.

geht das überhaupt?

Geändert von toggle (29-01-2004 um 08:25 Uhr)
toggle ist offline   Mit Zitat antworten
Alt 29-01-2004, 10:02   #7 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
also, möglicherweise verhält es sich mit Variablen-Scopes in MX 2004 anders als in MX, aber dein Array wird doch trotzdem in der _root erstellt und somit doch logischerweise auch außerhalb der Schleife...
Und was ist, wenn du
_root.arr_UP_UP_namen0 = new Array();
vor die Schleife schreibst und in der Schleife ebenfalls mit _root referenzierst?

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 29-01-2004, 14:02   #8 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 109
hi ludabruda,

ja, so hab ich es jetzt auch erstmal gemacht.
allerdings erzeuge ich die anzahlen von arrays
je nach geladenem xml-inhalt.
mit dieser variante müßte ich bei 99 menüpunkten
auch 99 arrays per hand erzeugen

ist also nicht wirklich dynamisch.

danke trotzdem
toggle ist offline   Mit Zitat antworten
Alt 29-01-2004, 14:11   #9 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
das ist mir schon klar, dass das so nicht dynamisch ist.
Aber du kannst das Array innerhalb der Schleife ansprechen, oder?
Dann verstehe ich nicht, warum du es nicht außerhalb ansprechen kannst, wenn du es innerhalb der Schleife mit _root[..] erzeugst...das ergibt keinen Sinn
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 30-01-2004, 07:39   #10 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 109
hi ludabruda,

ich hab hier mal den abgespeckten Funktionsablauf, der
einfach nur zeigen soll, wo meine arrays auftauchen:

ActionScript:
  1. //Hier muss ich es anlegen:
  2. _root.arr_UP_UP_namen0 = new Array();
  3. _root.arr_UP_UP_namen1 = new Array();
  4. meinXML = new XML ();
  5. meinXML.ignoreWhite = true;
  6. meinXML.onLoad = function (geladen){
  7.     if (geladen){
  8.         for (x = 0; x < anzahlHP; x++){
  9.             bla....
  10.             for(i = counter; i < _root["anzahlUP"+x]; i++){
  11.             }
  12.             for(z = 0; z < _root["anzUP"+x]; z++){
  13.                 for(w = 0; w < _root["anzUP_UP"+z]; w++){
  14.                     //Hier wird's gefüllt:
  15.                     _root["nameUP_UP"+w] = this.firstChild.firstChild.childNodes[x].childNodes[z+1].childNodes[w+1].childNodes;
  16.                     _root["arr_UP_UP_namen"+t][w] = _root["nameUP_UP"+w];
  17.                 }
  18.             }
  19.         }
  20.     }
  21.     else{
  22.         trace ("Fehler beim Laden der XML-Datei...");
  23.     }   
  24. }
  25. meinXML.load ("neu.xml");
  26.  
  27. function mainFunction_UP() {//immer bei Klick der UP
  28.     for(w = 0; w < _root["arr_UP_UP_namen"+i].length; w++){
  29.         var mc = _root.attachMovie("fields_up_up", "up_up"+w, w);
  30.         mc._x = startx;
  31.         mc._y = starty+w*(mc._height+2);
  32.         mc.title = _root["arr_UP_UP_namen"+i][w];
  33.     }
  34. }

ich möchte halt verhindern, dass ich die arrays am anfang
anlegen muss. mache ich dies nicht, sind die arrays nicht ansprechbar.
sie sollten in der letzten funktion mainFunction_UP() nutzbar
sein.


???
toggle ist offline   Mit Zitat antworten
Alt 30-01-2004, 11:37   #11 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
wie gesagt, bin mir nicht sicher, ob MX 2004 hier anders verfährt, als MX...

meine Fragen im Code...
ActionScript:
  1. //Hier muss ich es anlegen:
  2. meinXML = new XML ();
  3. meinXML.ignoreWhite = true;
  4.  
  5. meinXML.onLoad = function (geladen){
  6.         if (geladen){
  7.                 for (x = 0; x < anzahlHP; x++){ // ist anzahlHP aus dem XML? Dann this.anzahlHP
  8.                         bla....
  9.                         for(i = counter; i < _root["anzahlUP"+x]; i++){ // existiert _root["anzahlUP"+x] bereits? das ist weder vorher noch hier deklariert...
  10.                         }
  11.                         for(z = 0; z < _root["anzUP"+x]; z++){ // gleiches gilt für _root["anzUP"+x].
  12.                                 for(w = 0; w < _root["anzUP_UP"+z]; w++){
  13.                                         //Hier wird's gefüllt:
  14.                                         _root["nameUP_UP"+w] = this.firstChild.firstChild.childNodes[x].childNodes[z+1].childNodes[w+1].childNodes;
  15.                                         _root["arr_UP_UP_namen"+t][w] = _root["nameUP_UP"+w]; // was ist t und wo kommt es her?
  16.                                 }
  17.                         }
  18.                 }
  19.         }
  20.         else{
  21.                 trace ("Fehler beim Laden der XML-Datei...");
  22.         }
  23. }
  24. meinXML.load ("neu.xml");
  25.  
  26. function mainFunction_UP() {//immer bei Klick der UP
  27.         for(w = 0; w < _root["arr_UP_UP_namen"+i].length; w++){
  28.                 var mc = _root.attachMovie("fields_up_up", "up_up"+w, w);
  29.                 mc._x = startx;
  30.                 mc._y = starty+w*(mc._height+2);
  31.                 mc.title = _root["arr_UP_UP_namen"+i][w];
  32.         }
  33. }

Wann und wo rufst du die Funktion mainFunction_UP() auf?

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 30-01-2004, 11:55   #12 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 109
hi,

die funktion rufe ich bei on(release) auf dem UP-Button auf.

Menüstruktur:

HP(Hauptpunkt)
UP(Unterpunkt)
UP
UP_UP(Unter-Unterpunkt)
UP_UP
UP
HP
UP
UP

also bei klick auf UP -> erstelle UP_UP anhand von dem
dazugehörigen arr_UP_UP[]
toggle ist offline   Mit Zitat antworten
Alt 30-01-2004, 12:20   #13 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
und was ist mit den Fragen aus dem Code?

vielleicht hilft ne Fla mit XML-File...
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 30-01-2004, 13:26   #14 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Beiträge: 109
ups,

sorry, die hab ich übersehen.

ActionScript:
  1. // ist anzahlHP aus dem XML? Dann this.anzahlHP
  2.  
ja, aus dem xml
ActionScript:
  1. // existiert _root["anzahlUP"+x] bereits? das ist weder vorher noch hier deklariert...
  2.  
ja, genau da wo "bla" steht
ActionScript:
  1. // gleiches gilt für _root["anzUP"+x].
  2.  
auch da wo "bla" steht
ActionScript:
  1. // was ist t und wo kommt es her?
  2.  
t zählt einfach die anzahl der erzeugten UP_UP-arrays, damit
ich nachher bei jedem UP-Button-Klick sein eigenes UP_UP-array
anspechen kann. also t~UP-Button
ich lege damit für jeden UP ein array an, egal, ob es UP_UP dafür
gibt, oder nicht.

Soll ich dir mal die fla schicken?

bin allerdings erst montag wieder hier.
würd mich freuen, wenn du mir weiter helfen
könntest. danke

gruß,
toggle
toggle ist offline   Mit Zitat antworten
Alt 30-01-2004, 18:08   #15 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
mir scheint der Teil, wo bla steht, irgendwie relevant zu sein...

schick mal die fla, aber mach sie MX-kompatibel, hab kein MX 2004


Grüße
Sascha
__________________
12:15, press return
ludabruda 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 13:00 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele