2

クラスインスタンスのすべての変数を反復処理するにはどうすればよいですか?通常のオブジェクトで機能するようです...

編集:これはそれを行います=)

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]));

出力:オブジェクト文字列111 Thu Nov 8 11:19:27GMT-07002012クラス文字列222ThuNov 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();
}
4

1 に答える 1

5

を使うのが一番簡単だと思いますflash.utils.describeType()

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

これにより、クラスのすべての詳細を記述した XML ドキュメントが返され、通常の E4X で攻撃できます。これが私がテストした例です:

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
于 2012-11-08T18:09:38.003 に答える