as 3の反射アプリケーション、例えば、カスタムクラスのメンバー情報を取得する
1459 ワード
class Test
public var test1:String = "";
public var test2:String = "";
public var test3:String = "";
}
上のTestクラスはテスト用のクラスです
3つの変数があり、反射して取得する可能性があります.
package
{
import flash.utils.describeType;
/**
*
* @author jave.lin
* @date 2013-6-26
*/
public class ReflectionUtil{
/**
*
* <listing version="3.0">
* <font size='2'>
* e.g.
* class Test{
* public var a:String;
* public var b:String;
* }
* var result:Vector.<String> = getTypeVarsNameArr(Test);
* result ["a", "b"] ;
* ;
* </font>
* <listing/>
* */
public static function getTypeVarsNameArr(cls:Class):Vector.<String>{
var result:Vector.<String> = new Vector.<String>();
var xml:XML = describeType(cls);
for (var i:int = 0; i < xml.factory.variable.length(); i++){
var xmlNode:XML = xml.factory.variable[i];
result.push(xml.factory.variable[i].@name);
}
return result;
}
}
}
呼び出し:
var result:Vector.<String> = getTypeVarsNameArr(Test);
trace(result);
その結果、式のリストに次のように表示されます.
"result" __AS3__.vec.Vector.<String> (@468c8f9)
[0] "test3"
[1] "test1"
[2] "test2"
fixed false
length 3