博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
as 中的反射 describeType
阅读量:6675 次
发布时间:2019-06-25

本文共 3132 字,大约阅读时间需要 10 分钟。

describeType函数在上的定义如下:生成描述ActionScript对象(命令为方法的参数)的XML对象,此方法实现ActionScript语言的反射编程概念。

这个方法的应用场景可能是这样的:

定义一个方法,解析很多邮件的消息,很多消息的内容格式又是一致的(需要实现方法的共用),那么定义下面一系列的方法了。

public function parseEmail_1():void {}

public function parseEmail_2_3_4_5():void {}

public function parseEmail_10_11_12():void {}

如何根据邮件格式的消息,直接就调用了相应的函数?那首先需要有一个对象存储了该类的所有方法,然后查找到包含此id的方法,之后调用它即可。

当参数为对象的时候,则返回的 XML 对象包括该类型的所有实例属性,但不包括任何静态属性。.isStatic属性为flase

当参数为类的时候,返回的 XML 对象不仅仅包括类型的静态属性,而且还包括它的所有实例属性。 实例属性嵌套在名为 <factory> 的标签内,从而与静态属性区分开来。 在这种情况下,<type> 标签的 isStatic 属性为 true

 

 

accessor  属性

method  方法

示例:

建立一个名为“describeType_Test”的ActionScript工程。使用describeType(类名)即可获得到该类的所有相关信息

这样,只需要获取到该xml对象下的所有method节点,然后遍历它,匹配到包含该邮件格式id的方法,使用split将方法名分隔开:parseEmail、1、2、…,第一位则为方法名,之后的便是该方法可以解析的指定格式的id,调用this[funName](paras..);
 
as的示例代码:
package {
import flash.display.Sprite; import flash.utils.describeType; import flash.utils.getDefinitionByName; import flash.utils.getQualifiedClassName; import flash.utils.getQualifiedSuperclassName; public class describeType_Test extends Sprite {
public function describeType_Test() {
//this [object describeType_Test] var clsStr:String = getQualifiedClassName(this); //describeType_Test var supClsStr:String = getQualifiedSuperclassName(this); //flash.display::Sprite var cls:Class = getDefinitionByName(clsStr) as Class; var xml:XML = describeType(cls); trace(xml); } public function parseEmail_1():void {
} public function parseEmail_2():void {
} public function parseEmail_3():void {
} public function parseEmail_4_5_6_7():void {
} public function parseEmail_10_101_112():void {
} public function parseEmail_13_14_1115():void {
} } }

 

转载地址:http://mtrxo.baihongyu.com/

你可能感兴趣的文章
微信公众号的分类
查看>>
分布式高可用存储(drbd+corosync+pacemaker+MooseFS)
查看>>
Nginx+Lua+Redis连接池
查看>>
MySQL python 数据迁移脚本
查看>>
我的友情链接
查看>>
网站运维常用小技巧,排错必备
查看>>
Python中MySQLdb模块的安装
查看>>
windows下的grep
查看>>
find 详解
查看>>
【书签】valgrind - the dynamic analysis tools
查看>>
zookeeper-体验原生api
查看>>
2015中国呼叫中心知识库发展的5个趋势
查看>>
功能教室预约系统开源下载(c#源码)
查看>>
杨百旺短线技法
查看>>
Linux Mysql Related
查看>>
Impala 和 Hive 之间 SQL 区别(翻译)
查看>>
Exception练习-Exception的正确使用
查看>>
关于rms,打开文档的时候提示您没有权限打开文档,因为您的权限已过期
查看>>
如何在eclipse里关联查看android源码
查看>>
Scala 深入浅出实战经典 第80讲:List的泛型分析以及::类和Nil对象
查看>>