動(dòng)態(tài)獲取類名稱, 超類 (Superclass) 名稱 有點(diǎn)像之前版本中的 typeof, 這個(gè)方法返回的是字符串
QUOTE: ------------------------------------------------------------ public function getQualifiedClassName(value:*):String 返回類的完全限定名 (fully qualified class name, qualified 我不知道怎么翻了..)
參數(shù) value:* - 想要得到完全限定名的對象. 他可以是任何 ActionScript 類型, 對象實(shí)例, 簡單類型如 uint 以及類類型. 返回 String - 包含類的完全限定名的字符串 ------------------------------------------------------------
QUOTE: ------------------------------------------------------------ public function getQualifiedSuperclassName(value:*):String 返回目標(biāo)對象基類的完全限定名, 本函數(shù)提供比 describeType 更簡便的方法來獲取基類的名稱 提示: 本函數(shù)限制只尋找實(shí)例的繼承層次,而 describeType() 函數(shù)使用的是類對象繼承. 調(diào)用 describeType() 函數(shù)時(shí)返回的是基于超類以的類繼承結(jié)構(gòu). 而 getQualifiedSuperclassName() 將忽略類的繼承結(jié)構(gòu)直接返回最接近的繼承對象 例如, 理論上 String 類繼承自 Class, 但調(diào)用 getQualifiedSuperclassName(String) 時(shí)返回的是 Object. 換句話說, 不管你傳遞的是類還是類的實(shí)例, 他們的返回值都是一樣的
參數(shù) value:* - 任何值. 返回 String - 基類的完全限定名, 如果沒有的話返回 null ------------------------------------------------------------
例子:
實(shí)例化新的 Sprite, 然后獲取他的類名并輸出
var sprite1:Sprite = new Sprite(); var classNameOfSprite:String = getQualifiedClassName(Sprite); trace("Sprite 的類名 : " + classNameOfSprite); // Sprite 的類名 : flash.display::Sprite
超類
var superclassNameOfSprite:String = getQualifiedSuperclassName(Sprite); trace("Sprite 的超類 (基類) 類名 : " + superclassNameOfSprite); // Sprite 的超類 (基類) 類名 : flash.display::DisplayObjectContainer
根據(jù)剛剛獲取的類名使用 創(chuàng)建實(shí)例
var SpriteClass:Class = getDefinitionByName(classNameOfSprite) as Class; var sprite2:Sprite = new SpriteClass() as Sprite; trace("sprite2 通過 getDefinitionByName 創(chuàng)建 Sprite 實(shí)例");
畫一個(gè) 100 x 100 的矩形并顯示
sprite2.graphics.beginFill(0xFF00FF); sprite2.graphics.drawRect(0, 0, 100, 100); sprite2.graphics.endFill(); addChild(sprite2);
修改后的 ReflectionSample.as
代碼拷貝框
[Ctrl+A 全部選擇 然后拷貝]
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁 AS3 中的反射 [2] 下一頁 AS3 中的反射 [4]
◎進(jìn)入論壇Flash專欄版塊參加討論
|