var sprite1:Sprite = new Sprite();
//获取完整类名
var classNameOfSprite:String = getQualifiedClassName(Sprite);
//获取字节码
var ClassReference:Class = getDefinitionByName(classNameOfSprite) as Class;
//实例化对象
var instance:Sprite = new ClassReference() as Sprite ;
//使用describeType方法以xml方式输出类信息
describeType(ProposalModelLocator.getInstance().proposalInfoAC);根据xml进行反射
package { public class UserEntity { private var _username:String; private var _password:String; public function UserEntity() { } public function get password():String { return _password; } public function set password(value:String):void { _password = value; } public function get username():String { return _username; } public function set username(value:String):void { _username = value; } } }
protected function button2_clickHandler(event:MouseEvent):void { var userEntity:UserEntity = new UserEntity(); userEntity.username="asdf"; var instanceInfo:XML = describeType(userEntity); trace(instanceInfo); var properties:XMLList = instanceInfo..accessor.(@access != "writeonly") + instanceInfo..variable; for each (var propertyInfo:XML in properties) { var propertyName:String = propertyInfo.@name; trace(userEntity[propertyName]); } }
可以根据以下信息进行反射。
标签 | 属性 | 说明 |
<type> | XML 对象的根标签 | |
name | ActionScript 对象 (ActionScript object) 类型 | |
base | 当前对象的直属超类, 如果当前 ActionScript 对象是类对象, 那那么该值为 Class . | |
isDynamic | 如果当前 ActionScript 对象被定义为 dynamic, 那么该属性为 true , 否则为 false . 如果当前 ActionScript 对象是类对象, 那么该属性也为 true , 因为 Class 类是 dynamic 的 | |
sFinal | 如果当前 ActionScript 对象被定义为 final, 那么该属性为 true , 否则为 false | |
isStatic | 如果当前 ActionScript 是类对象或者构造函数, 那么该属性为 true , 否则为 false . 该属性被命名为 isStatic 是因为如果值为 true 的话, 任何标签都不会被嵌套到 factory 标签中 | |
<extendsClass> | 使用 extendsClass 标签分别存放当前 ActionScript 对象的超类 | |
type | 当前 ActionScript 对象所继承的超类的名字 | |
<implementsInterface> | 使用 implementsInterface 标签分别存放当前 ActionScript 对象, 以及他的超类所实现的接口 | |
type | 当前 ActionScript 所实现的接口的名字 | |
<accessor> | 访问器是由 getter 和 setter 所定义的属性 | |
name | 该访问器的名字 | |
access | 该访问器的访问权限. 可能的值有 readonly , writeonly , 和 readwrite . | |
type | 该属性的数据类型 | |
declaredBy | 指示由哪个类定义了该访问器 | |
<constant> | 常量是由 const 所定义的属性 | |
name | 该常量的名称 | |
type | 该常量的数据类型 | |
<method> | 方法是由类定义的一部分公开的函数 | |
name | 方法名 | |
declaredBy | 指示该方法由哪个类定义 | |
returnType | 方法的返回类型 | |
<parameter> | 使用 parameter 分别存放该方法的参数, 该标签被嵌套在 <method> 中 | |
index | 一个数字指示当前参数被传递时所在函数中的位置, 如果是首个参数, 那么该值为 1 | |
type | 该参数的类型 | |
optional | 如果该参数为可选的话为 true , 否则为 false | |
<variable> | 变量 (variable) 是由 var 语句所定义的变量 | |
name | 变量名 | |
type | 变量类型 | |
<factory> | 如果当前 ActionScript 对象是类对象或者构造函数, 所有的实例属性将会被嵌套进该标签. 如果 <type> 标签的 isStatic 属性为 true , 所有属性 (properties) 和方法 (method) 将不会被嵌套进改标签中. 该标签只出现在当前 ActionScript 对象是类对象或者构造函数的情况下 | |