eval("k"+i) - kurze Frage

Veränderung

Erfahrenes Mitglied
Ich möchte diesen funktionieren Befehl ausführen:
Code:
_root.kartensammlung.kart2.gotoAndStop(42);

Ich will dies mit diesem aber leider nicht funktionieren Befehl machen:
Code:
_root.kartensammlung.eval("kart"+i).gotoAndStop(42);

Warum klappt meine letzte Anweisung in der Schleife nicht?
 
Hallo,

du kannst eine eval-Anweisung nicht einfach so ohne Kommentar in eine Referenz packen und mit Punkten verbinden. Zwei Möglichkeiten:

1. Mit eval den gesamten Ausdruck als Anweisung interpretieren lassen:
Code:
eval ("_root.kartensammlung.kart"+i+".gotoAndStop(42)");

2. Mit dem Object-Array-Access:
Code:
_root.kartensammlung["kart"+i].gotoAndStop(42)

gruss
 
<klugscheiss>
@luke: Du kannst mit eval keine Aktionen ausführen lassen, sondern lediglich Referenzen auf Objekte erhalten. ;)
</klugscheiss>
 
Danke, die zweite Methode funktioniert. Jetzt geht alles viel einfacher.


HTML:
<klugscheiss></klugscheiss>
Ist nicht das ganze Forum in diese Tags gesetzt? :suspekt:
Na klar, denn es ist ja ein Lehrforum bei dem jeder sein Wissen beigibt. :)
 
Soweit ich weiß, ging das nie. In Flash 4 konnte man allerdings Zuweisungen mit eval relalisieren:
Flashilfe hat gesagt.:
In Flash ab Version 5 können mit eval() keine Variablenwerte oder Instanznamen mehr dynamisch gesetzt oder abgerufen werden, da eval() nicht auf der linken Seite einer Gleichung stehen darf. Ersetzen Sie beispielsweise den Code
eval ("var" + i) = "first";
durch diesen:
this["var"+i] = "first"

Gruß
.
 
Zurück