2009-04-14 49 views
4

在動作腳本3中,您可以編寫一個定義動態對象的類(MovieClip和Object是兩個示例),可以在運行時修改此對象。我想知道是否有某種方式(當然是在運行時)知道某個對象是否是動態的。如何知道對象在AS3中是否動態

PS:如果沒有做這樣的事情:

function isDynamic(object) { 
    try { 
     object.newProperty = 'someValue' 
    } catch (e) { 
     return false 
    } 
    return true 
} 

回答

6

CookieOfFortune看法是正確的,但不幸的是代碼本身有問題,isDynamic是一個屬性,並且返回的值是一個字符串的值,它反映的XMLList一個真或假的值,而不是直接返回布爾值的子節點。它應該看起來更像這樣:

function isDynamic(object) : Boolean 
{ 
    var type:XML = describeType(object); 
    return [email protected]() == "true"; 
}
+0

是的,我很懶。 – CookieOfFortune 2009-04-14 18:23:59

+0

但是如果你想測試動態,以避免呼籲describeType ..感嘆。 – 2010-10-22 10:30:38

3

可以使用的describeType從flash.utils來描述XML格式的對象。這裏的參考API:flash.utils.describeType

function isDynamic(object) { 
    var type:XML = describeType(object); 
    if ([email protected] == "true") return true; 
    return false; 
} 
+0

「if(type.isDynamic)return true」。我認爲這可以通過「返回type.isDynamic」 – 2009-04-14 18:07:48

3

小心!

任何時候你想使用上的describeType()函數,使用的變化:重複調用的運行時反射機制的

import mx.utils.DescribeTypeCache; 
var typeDesc:XML = DescribeTypeCache.describeType(object).typeDescription; 

性能絕對 。這就是Adobe發明DescribeTypeCache類的原因。

2

這是一篇很舊的文章,但我會爲那些未來的搜索者添加一個選項。

AS3有一個內置的這樣的方式:

mx.utils.ObjectUtil.isDynamicObject(yourObject); 

瞭解更多關於它here

相關問題