2013-05-30 16 views
0

我有2個swf-s,main.swfanother.swf
main.swf將在運行時加載another.swf。
對應的類別爲MainAnother
二者import共同類Constant「main」swf的導入是否隱藏了動作腳本3中加載的swf的導入?

的問題是:
如果我更改Constant類,如下定義一個新的常數Another類的話,我肯定要編譯another.swf
然後,我運行main.swf並加載another.swf,但是Constant的更改未應用!

在相反,我必須重新編譯的main.swf使應用於another.swf的變化。
它看起來像因爲another.swf的main.swf加載,所以import還依賴於的main.swf
當您運行的main.swf第一,類MainimportConstant類第一,所以任何即將到來的import隱藏(或忽略?),這是真的嗎?

import只執行一次,並執行第一次播放.swf

.swf加載完成flash.display.Loader類。

回答

1

當一個類被加載時,它的完全限定域名(pacakge name + class name)被添加到一個全局註冊表中。當main.swf加載Constant類時,該類將被緩存。這個註冊表是在編譯時生成的,所以main.swfContant類定義被高速緩存,就像編譯時那樣。

實際上,如果您更改Constant,則只能重新編譯main.swf並查看修改後的定義在another.swf中可用。

+0

這是真的!我只能重新編譯main.swf來應用更改,這也困擾我。你有任何官方文章(Adobe或任何人)解釋所有這些機制?我真的很喜歡閱讀所有的細節,謝謝! –

+0

爲什麼這個緩存行爲困擾我,是因爲我實際上有很多.swf文件需要加載。如果這個類被緩存了,我不得不重新編譯main和其他.swf,即使我沒有對main做任何修改。 –

+0

@MarsonMao好吧,考慮一個全局var類作爲一個全局包含,它會強制你重新編譯所有使用它的項目,如果你改變了它。這是正常的。 – Vesper

相關問題