我们再试一下获取实例的信息 :
var sprite1:Sprite = new Sprite(); var instanceInfo:XML = describeType(sprite1);
返回 :
代码拷贝框
[Ctrl+A 全部选择 然后拷贝]
所有的标签与之前 factory 标签中的内容是一样的
现在我们使用 describeType 来遍历之前 Dummy 类中的元素
实例化:
var dummy:Dummy = new Dummy();
获取实例信息:
var instanceInfo:XML = describeType(dummy);
把所有的属性取出来, 包括访问器和变量, 并且访问器不可为只写:
var properties:XMLList = instanceInfo..accessor.(@access != "writeonly") + instanceInfo..variable;
此时 properties 里就有所有的属性名了. 最后我们遍历这个 XMLList
for each (var propertyInfo:XML in properties) { // 取出属性名 var propertyName:String = propertyInfo.@name; // 根据属性名来访问 trace(dummy[propertyName]); }
这样 dummy 就被 "遍历" 出了~
完整代码:
代码拷贝框
[Ctrl+A 全部选择 然后拷贝]
这样我们可以专门写一个类, 负责获取类信息, 详细见类中注释 TypeDescriptor.as, 负责获取信息
代码拷贝框
[Ctrl+A 全部选择 然后拷贝]
TypeDescription.as, 负责保存信息
代码拷贝框
[Ctrl+A 全部选择 然后拷贝]
点击下载教程及源码
出处:蓝色理想
责任编辑:moby
上一页 AS3 中的反射 [4] 下一页
◎进入论坛Flash专栏版块参加讨论
|