2 Stimmen

AS3-Objektnotation für Variable

Ich habe einige Variablen im Format:

var like6Y:Number = 50;

Später stelle ich einige dynamisch ein:

num=6;

Dann versuche ich, diese Zahl zu verwenden, um die Variable wie6Y zu erhalten:

 like+6+Y

Ich weiß, dass das völlig falsch ist, aber ich meine mich zu erinnern, dass man eine Art Objektnotation verwenden kann, um dies zu erreichen:

["like"+num+"Y"] 

Oder etwas in dieser Richtung. Aber ich weiß nicht mehr, wie man das macht. Danke

6voto

laurent Punkte 83238

Es ist möglich - einfach zugreifen this["like"+num+"Y"] . Angenommen, like6num eine Eigenschaft des aktuellen Objekts ist, andernfalls ändern Sie einfach this zum Namen des Objekts.

2voto

david.emilsson Punkte 2272

Auch wenn etwas wie this["like" + num + "Y"] würde für globale Variablen funktionieren, die Datentypen Array y Vector (verwenden Sie Vector, wenn Sie wissen, dass alle Werte vom gleichen Typ sind und dass jedem Index seiner Länge ein Wert zugewiesen wird) sind gebaut für die Aufgabe des Zugriffs auf einen Wert durch eine Integer-Referenz. Sie bieten auch den zusätzlichen Vorteil, dass Sie eine bessere Kontrolle über den Bereich haben, in dem die Variablen platziert werden.

Zum Beispiel:

var likeY:Array = [-10, 0, 10, 20, 30, 40, 50];
var num:int = 6;
trace(likeY[num]); //prints 50

1voto

Jim Jose Punkte 1279

In Javascript können Sie verwenden window["like"+num+"Y"] o eval("like"+num+"Y") ... aber es gibt keine Alternative in AS3.

Auch this["like"+num+"Y"] funktionieren, wenn Sie versuchen, auf eine öffentliche *Eigenschaft der aktuellen Klasse zuzugreifen.

Aber es gibt einige Drittanbieter-Libs, die die Eval-Methode in AS3 bringen. Ich habe sie nie benutzt, aber Sie können es versuchen, [Eval in AS3: Tipps zum Ausführen von dynamischem Actionscript][1] http://danielmclaren.com/node/113

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X