AS3动态获得类名及类的方法

获得某个实例对象的类:

实例名["constructor"];

实例名.constructor;

获得某个实例对象的类名:

getQualifiedClassName (对象实例名)

进一步解释如下

getQualifiedClassName (value:*)

参数value手册上说:可以将任何 ActionScript 值传递给此方法,包括所有可用的 ActionScript 类型、对象实例、原始类型(如 uint)和类对象。示例如下:

trace(getQualifiedClassName(“abc”));   //输出 String

trace(getQualifiedClassName(1));     //输出 int

trace(getQualifiedClassName(int));     //输出 int
trace(getQualifiedClassName(Sprite)); //输出 flash.display::Sprite
trace(getQualifiedClassName(自定义的类));//输出 带包路径的自定义类,类似上句输出,如果是在根包,或fla的库里定义的类,则因为在根路径则直接输出自定义类名,类似ActionScript的原始类型
trace(getQualifiedClassName(对象实例名));//参数可以是任何实例名,包括自定义类的实例,输出同上
trace(getQualifiedClassName(方法或函数名));//输出类似Function-20,builtin.as$0::MethodClosure

根据类名获得类:

getDefinitionByName(完全限定类名称的字符串表达式);

注意,这里的类名称需要有包路径的限定,如”flash.display.Sprite”,也可以这样写”flash.display::Sprite”,自定义的类也一样,当然如果自定义的类在根包,或是在fla的库里定义的类,或者是ActionScript的原始类型,则可以直接写类名字符串。

用得到的类实例化对象:

一般中间要用一个无类型变量传递类,进行实例化;

如:

var i=0;

var c:*=getDefinitionByName(“MyClass”+i);

var myClass:*=new c();

你可能感兴趣的:(FLEX技术)