as3 反射

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 对象的根标签
nameActionScript 对象 (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 对象是类对象或者构造函数的情况下
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值