這是一個愚蠢的問題。我用幾個swc(庫)編譯我的Flex應用程序,並創建一個swf文件。 swc的總和大約爲4 MB,但實際產生的swf只有1.6 MB。這怎麼可能?Flex鏈接:爲什麼我的swf文件的大小小於它的swc的大小?
謝謝!
這是一個愚蠢的問題。我用幾個swc(庫)編譯我的Flex應用程序,並創建一個swf文件。 swc的總和大約爲4 MB,但實際產生的swf只有1.6 MB。這怎麼可能?Flex鏈接:爲什麼我的swf文件的大小小於它的swc的大小?
謝謝!
編譯器只會從應用程序需要的swc中編譯類,除非您指定要「嵌入」哪些類。因此,swf的最終尺寸較小。
要在PEZ的響應擴大一點,典型地提供給用「庫路徑」編譯器參數Flex應用程序編譯器的SWC:
庫路徑路徑元素[...]
將SWC文件鏈接到生成的應用程序SWF文件。編譯器僅鏈接那些需要的SWC文件的類。您可以指定一個目錄或單個SWC文件。
您可以使用「包括的庫」而不是:
包括 - 庫庫[...]
鏈接SWC文件到最終的應用程序的SWF文件中的所有類,而不管不管它們是否被使用。
將此選項與僅包含在編譯時引用的那些類的庫路徑選項進行對比。
您通常希望使用「庫路徑」來幫助保持SWF的大小盡可能小。但是,如果您的應用程序僅通過反射實例化SWC中的類,則可能需要使用「包含庫」。由於這些類實際上並未鏈接到應用程序中,因此如果使用「庫路徑」引用SWC,則它們將不會包含在內,並且在實例化期間由於類型不可用而會出現運行時錯誤。但是,如果您使用「包含庫」,該類(以及SWC中的所有其他類)將可用於應用程序。
1)在swf文件中只包含必需的類
2)更多文件導致額外的頭信息,這些信息也會稍微增加大小。
要減小flex swf的大小,您可以使用本文中提到的這些技術:
http://askmeflash.com/article_m.php?p=article&id=9