(转)getDefinitionByName,getQualifiedClassName,getQualifiedSuperclassName用法

本文详细解释了Flash的utils包中的getDefinitionByName、getQualifiedClassName、getQualifiedSuperclassName这三个方法的功能,通过实例演示了如何使用这些方法来获取类的原型、完整类名和父类原型。文章最后还提供了一个递归获取类所有祖先类的方法,增加了方法的实用性。

转自:       http://www.cnblogs.com/jason101/archive/2012/03/26/2417536.html


flash.utils包中的
getDefinitionByName,getQualifiedClassName,getQualifiedSuperclassName
可能帮助文档写的过于专业,程序底子差的不一定能看明白,我用我理解的,通俗的讲一遍给大家听。。

1、getDefinitionByName
如果你已知这个类的类名类路径,但是你又没办法得到这个类的原型,那么可以通过该函数,将已知的类名类路径转换为类的原型,然后还可以将得到的类原型进行实例化,比如:

var Tmp = getDefinitionByName("flash.display.Sprite"); 
var spr = new Tmp; 
trace(spr is Sprite); 
//输出 true 

通过getDefinitionByName得来的其实就是Sprite类,然后实例化,再判断spr是否为Sprite,得出的结果是true

2、getQualifiedClassName
如果你现在有个引用值,你不知道这个引用所表示的什么类,什么类路径,或许是个类不知道类名等等,想得到这个类的完整名字,那么可以使用它,比如:

var spr:Sprite = new Sprite; 
trace(getQualifiedClassName(spr)); 
trace(getQualifiedClassName(Sprite)); 
//两者都是输出 flash.display::Sprite 

 

 

3、getQualifiedSuperclassName
这个方法就比较好玩了,是获取自己父类的类原型,比如你一系列的类是继承某个抽象类,而现在你无法得到这个抽象类,那么你可以使用该方法获得该抽象类的类原型,比如:

var spr:Sprite = new Sprite; 
trace(getQualifiedSuperclassName(spr)); 
trace(getQualifiedSuperclassName(Sprite)); 
//两者都是输出 flash.display::DisplayObjectContainer 

 

 

其实这个三方法在日常编程很少用得到,但是了解一下并无害,而且这个三个方法,也经常出现在各大公司的面试题上,因为这几个用处不大,但是可以了解你对AS3的熟悉程度到了哪儿。
举一反三,竟然可以获得他的父类,那么抽象类的父类也可以获得拉?
请看:

复制代码
 1 var tmp = Sprite; 
 2 while(tmp != Object){ 
 3         tmp = getDefinitionByName(getQualifiedSuperclassName(tmp)); 
 4         trace(getQualifiedClassName(tmp)); 
 5 } 
 6 /** 
 7 * 输出: 
 8 * flash.display::DisplayObjectContainer 
 9 * flash.display::InteractiveObject 
10 * flash.display::DisplayObject 
11 * flash.events::EventDispatcher 
12 * Object 
13 */ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值