2 Stimmen

AS3 iteriert durch Klassenvariablen

Wie kann ich durch alle Variablen einer Klasseninstanz iterieren? es scheint für normale Objekte zu funktionieren...

Bearbeitet: So wird es gehen =)

var test:anyClass=new anyClass();
var someObject:Object={val1:"object string",val2:111,val3:new Date()};
var xmlList:XMLList=describeType(anyClass)..variable;
for each(var key:* in someObject)
    trace(String(key));
for each(var item:XML in xmlList)
    trace(String(test[item.@name]));

Ausgabe: Objekt String 111 Thu Nov 8 11:19:27 GMT-0700 2012 Klasse String 222 Thu Nov 8 11:19:27 GMT-0700 2012

public class anyClass
{
    public var val1:String="class string";
    public var val2:int=222;
    public var val3:Date=new Date();
}

5voto

Jude Fisher Punkte 10919

Ich denke, der einfachste Weg ist die Verwendung von flash.utils.describeType()

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/package.html#describeType ()

Dies gibt ein XML-Dokument zurück, das alle Details einer Klasse beschreibt, die Sie dann mit normalem E4X angreifen können. Hier ist ein Beispiel, das ich getestet habe:

import flash.display.Sprite;
import flash.utils.describeType;

var test:String = "TEST";

function DescribeTypeExample():void {
    var child:Sprite = new Sprite();
    var description:XML = describeType(this);
    var variables:XMLList = description..variable;
    for each(var variable:XML in variables) {
        trace("VARIABLE: " + variable.@name);
        trace("VALUE: " + this[variable.@name]);
    }
}

this.DescribeTypeExample();

// Output:

// VARIABLE: test
// VALUE: TEST

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