這樣會造成檔案體積越來越大
有一種做法就是將這些圖像元件拉到外部swf中,在程式初始化預先載入
隨後利用ApplicationDomain.currentDomain.getDefinition(元件類別名稱)存取
請讓自己養成習慣,以往存取元件的方式,請用上列方式取代
- 程式中直接建構實體。
- new AClass();
- 盡量減少使用Flash IDE創建的元件,盡可能的使用類別。
載入外部swf的注意事項
主要swf與被載入的swf所屬同網域
請替Loader增加LoaderContext.applicationDomain=ApplicationDomain.currentDomain;
其他用法:對於要使用何種
ApplicationDomain
屬性,您有下列四種選擇:- 載入器之 ApplicationDomain 的子系。預設值。 您可以使用
new ApplicationDomain(ApplicationDomain.currentDomain)
語法明確表示這項選擇。 這樣會允許載入的 SWF 檔直接使用父輩的類別,例如藉由撰寫new MyClassDefinedInParent()
。 然而,父輩卻無法使用此語法。如果父輩希望使用子系的類別,便必須呼叫ApplicationDomain.getDefinition()
以擷取這些類別。 這項選擇的優點在於,如果子系定義之類別的名稱,與父輩已定義的類別相同,並不會造成錯誤,子系將會直接繼承父輩對於該類別的定義,而且除非子系或父輩呼叫ApplicationDomain.getDefinition()
方法以擷取定義,否則都不會使用到子系的衝突定義。
- 載入器自己的 ApplicationDomain。您可以在使用
ApplicationDomain.currentDomain
時,使用此應用程式網域。 當載入完成時,父輩和子系都可直接使用彼此的類別。 如果子系嘗試定義的類別與父輩已經定義的類別同名,就使用父類別,忽略子類別。
- 系統 ApplicationDomain 的子系。您可以在使用
new ApplicationDomain(null)
時,使用此應用程式網域。 這樣會完全分隔載入器和載入對象,允許兩者以相同的名稱定義不同的類別,而不會造成衝突或遮蓋。 兩端都能看到另一端之類別的唯一方式,便是呼叫ApplicationDomain.getDefinition()
方法。
- 某些其它 ApplicationDomain 的子系。有時候,您可能會擁有更複雜的 ApplicationDomain 階層。 您可以從自己的 SecurityDomain,將 SWF 檔載入任何 ApplicationDomain。 例如,
new ApplicationDomain(ApplicationDomain.currentDomain.parentDomain.parentDomain)
會將 SWF 檔載入至目前網域之祖父輩 (父輩的父輩) 的新子系中。
主要swf與被載入的swf非屬同網域
請替Loader增加LoaderContext.
securityDomain
= SecurityDomain.currentDomain
;
沒有留言:
張貼留言