看了動態類,內容不多,也就不總結了,偷賴,把《ActionScript3.0 編程》一書中的內容摘錄如下,博客類型寫了原創,原創摘錄^_^
-----------------------------------------我是華麗的分隔線---------------------------------------------------
動態類
“動態”類定義在運行時可通過添加/ 更改屬性和方法來改變的對象。 非動態類(如 String類)是“密封”類。您不能在運行時向密封類中添加屬性或方法。
在聲明類時,可以通過使用 dynamic 屬性來創建動態類 。例如,下面的代碼創建一個名爲
Protean 的動態類:
dynamic class Protean
{
private var privateGreeting:String = "hi";
public var publicGreeting:String = "hello";
function Protean()
{
trace("Protean instance created");
}
}
如果要在以後實例化 Protean 類的實例,則可以在類定義的外部向該類中添加屬性或方法 。
例如,下面的代碼創建 Protean 類的一個實例,並向該實例中添加兩個名稱分別爲 aString和 aNumber 的屬性:
var myProtean:Protean = new Protean();
myProtean.aString = "testing";
myProtean.aNumber = 3;
trace(myProtean.aString, myProtean.aNumber); // 測試 3
添加到動態類實例中的屬性是運行時實體,因此會在運行時完成所有類型檢查。不能向以這種方式添加的屬性中添加類型註釋。
您還可以定義一個函數並將該函數附加到 myProtean 實例的某個屬性,從而向 myProtean實例中添加方法。下面的代碼將 trace 語句移到一個名爲 traceProtean() 的方法中:
var myProtean:Protean = new Protean();
myProtean.aString = "testing";
myProtean.aNumber = 3;
myProtean.traceProtean = function ()
{
trace(this.aString, this.aNumber);
};
myProtean.traceProtean(); // 測試 3
但是,以這種方式創建的方法對於 Protean 類的任何私有屬性或方法都不具有訪問權限。而且,即使對 Protean 類的公共屬性或方法的引用也必須用 this 關鍵字或類名進行限定。 下面的示例說明了 traceProtean() 方法,該方法嘗試訪問 Protean 類的私有變量和公共變量。
myProtean.traceProtean = function ()
{
trace(myProtean.privateGreeting); // undefined
trace(myProtean.publicGreeting); // hello
};
myProtean.traceProtean();
-----------------------------------------我,華麗的分隔線,再次出現-------------------------------------
這其實和javascript中的機制類似,不同的是在javascript中,可以對任意對象,在任何時候,任意的添加屬性和方法。而as3對此做了很大的限制,它們本來也是基於同一標準實現的。但as3已經有些接近強類型語言了。
最後,鄙視一下自己抄書的行爲!!-_^