(轉)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 */ 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章