Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-09-2003, 03:14   #1 (permalink)
Nuckel>>Lego>>ZX81>>Flash
 
Registriert seit: Aug 2002
Ort: Börlien
Beiträge: 51
Question tricky: String in interpretierbare Variable

Also ich krabbel schon auf allen Vieren, grins.

In einem Script wird der Name einer Array-Variablen konstruiert. In meinem Fall frickel ich mit Namen wie z.B.
ActionScript:
  1. _root.allow1[0]
rum...die 1 hinter allow ist dynamsch, und die 0 in den eckigen Klammern auch.

Zum Konstruieren nehme ich eine Variable (hier: HOLDER) und lasse in ihr den Namen der später gebrauchten Variablen hineingenerieren (_root.p ist hier 1 und i=0):
ActionScript:
  1. holder = "_root.allow" +_root.p+ "[" +i+ "]";

holder enthält nun also den vollständigen Namen der Variablen. Wie komme ich jetzt an den Wert des Originalarrays (_root.allow1[0]) durch Verwendung der Variable holder? Sämtliche Versuche mit eval() oder [] scheitern, ebenso alle denkbaren Varianten mit Number(). Ich hab echt alles probiert von Number(parseInt(holder)) über wirklich jeglich erdenkliche Variation davon. Entweder erhalte ich 0 oder NaN oder Nichts.

Das kann doch nicht so schwer sein?

Helft mir.
Sonst schimpf ich.

__________________
wat läuftn da NU wieder schief ?!
Gekko ist offline   Mit Zitat antworten
Alt 11-09-2003, 09:25   #2 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
ein array name wirst du so nicht ansprechen können.
so gehts.
ActionScript:
  1. allow1=["das ist der wert"]
  2. holder=[]
  3. i=0;p=1
  4. holder[0]="allow"+p
  5. holder[1]=i
  6. trace(_root[holder[0]][holder[1]])
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 11-09-2003, 11:57   #3 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Nach der neuen Dot-Syntax kannst du das dynamisch auch so schreiben:
ActionScript:
  1. var index = 1;
  2. _root["allow"+index][0]=wert;
  3. //wird dann intern zu _root.allow1[0] zusammengesetzt
  4.  
  Mit Zitat antworten
Alt 11-09-2003, 12:06   #4 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
@agedoubleju ist klar so. nur löst das nicht seine problem.
wenn ich davon ausgehe das er in holder ein beliebigen
array name mit beliebigen index speichern will.
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 11-09-2003, 17:37   #5 (permalink)
Nuckel>>Lego>>ZX81>>Flash
 
Registriert seit: Aug 2002
Ort: Börlien
Beiträge: 51
Thumbs up

FANTASTISCH!

danke Euch beiden, endlich ist mir die Sache klarer!
HAY: Dein Beispiel ist die genaue Lösung meines Problems, vielen, vielen Dank und durch die Syntax von agedoubleju is mir nu endlich klar, wie die Syntrax in solchen Geschichten genau aussieht.

Wirklich: dieses Forum ist der absolute Knaller, man braucht hier kaum noch was zu fragen, es wurde eh schon alles erklärt oder beantwortet.

Und tut man's doch, ist sofort die Lösung da!
Danke nochmal Euch beiden!

__________________
wat läuftn da NU wieder schief ?!
Gekko ist offline   Mit Zitat antworten
Alt 11-09-2003, 17:38   #6 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
gern geschehe
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 13-09-2003, 05:17   #7 (permalink)
Nuckel>>Lego>>ZX81>>Flash
 
Registriert seit: Aug 2002
Ort: Börlien
Beiträge: 51
hmmmm...

wie verhält sich das eigentlich mit Objekten der LoadVars()-Klasse? Wenn man sich zum Beispiel per PHP eine Variablenfolge damit zukommen lässt?

Nehmen wir an, ich erhalte die Variablen "allow1=3", "allow2=65" und "allow3=374" mit den Zahlenwerten zurück:

ActionScript:
  1. sendrecobject= new LoadVars()
  2. sendrecobject.holder="test";
  3. sendrecobject.sendAndLoad("www.nichtwichtig.de/gibMirWasZuRechnen.php", sendrecobject, "POST");
  4. sendrecobject.onLoad = function(success) {
  5. trace (sendrecobject.allow1); // aha: 3 !
  6. trace (sendrecobject.allow2); // aha: 65 !
  7. trace (sendrecobject.allow3); // aha: 374 !
  8. }

was ist nun aber, wenn ich die Anzahl dieser "allowN" nicht weiss und Flash mit dem Wert einer x-beliebigen "allow"-Variable rechnen soll, ich sie also nicht dezidiert mit "allow3" ansprechen kann, sondern diese 3 dynamisch/eine Variable ist? Die LoadVars()-Objekte scheinen sich völlig anders zu verhalten, ein
ActionScript:
  1. p=3;
  2. temp="sendrecobject.allow"+p;
  3. holder=_root[temp];
scheint hier nicht zu funktionieren! Ich weiss, dass ich mit
ActionScript:
  1. sendrecobject.toString();
den gesamten Datenrückfluss anzeigen und auch bearbeiten kann, aber das ist sicher die uneleganteste Lösung...

Gibt's hier irgendeine bessere Variante?
Warum verhält sich das LoadVars()-Objekt anders?

Grüße,

Gekko
__________________
wat läuftn da NU wieder schief ?!
Gekko ist offline   Mit Zitat antworten
Alt 13-09-2003, 11:30   #8 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Du hast wahrscheinlich die Syntax der Pfadangabe nicht richtig geschrieben, versuchs mal mit temp=_root.sendrecobject["allow"+p];
  Mit Zitat antworten
Alt 16-09-2003, 00:30   #9 (permalink)
Nuckel>>Lego>>ZX81>>Flash
 
Registriert seit: Aug 2002
Ort: Börlien
Beiträge: 51
Jau, das isses:

in meinem fall liegt die variable auf dem movieclip, also ist
ActionScript:
  1. anything = this[String];
die richtige Wahl...kannte mich mit der Syntax bis jetzt noch absolut nicht aus, wieder was dazugelernt...

danke auf jeden fall, hat mir alles sehr weitergeholfen,

merci

__________________
wat läuftn da NU wieder schief ?!
Gekko 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 07:28 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele