(轉)getDefinitionByName,getQualifiedClassName,getQualifiedSuperclassName用法
首先先告訴大家,我要講的是flash.utils包中的
getDefinitionByName,getQualifiedClassName,getQualifiedSuperclassName
可能幫助文檔寫的過于專業,程序底子差的不一定能看明白,我用我理解的,通俗的講一遍給大家聽。。
1、getDefinitionByName
如果你已知這個類的類名類路徑,但是你又沒辦法得到這個類的原型,那么可以通過該函數,將已知的類名類路徑轉換為類的原型,然后還可以將得到的類原型進行實例化,比如:
View Code
var Tmp = getDefinitionByName("flash.display.Sprite");
var spr = new Tmp;
trace(spr is Sprite);
//輸出 true
通過getDefinitionByName得來的其實就是Sprite類,然后實例化,再判斷spr是否為Sprite,得出的結果是true
2、getQualifiedClassName
如果你現在有個引用值,你不知道這個引用所表示的什么類,什么類路徑,或許是個類不知道類名等等,想得到這個類的完整名字,那么可以使用它,比如:
View Code
var spr:Sprite = new Sprite;
trace(getQualifiedClassName(spr));
trace(getQualifiedClassName(Sprite));
//兩者都是輸出 flash.display::Sprite
3、getQualifiedSuperclassName
這個方法就比較好玩了,是獲取自己父類的類原型,比如你一系列的類是繼承某個抽象類,而現在你無法得到這個抽象類,那么你可以使用該方法獲得該抽象類的類原型,比如:
View Code
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 */
刨根揭底,把Sprite的長輩都挖出來了,不管父親還是爺爺,或者爺爺的爺爺。。。
有意思吧?了解了解吧。。實質作用沒多大,全當小說看吧

浙公網安備 33010602011771號