Flex链接:为什么我的swf文件的大小小于它的swc的总和?

时间:2009-06-24 19:34:21

标签: flex compiler-construction linker

这是一个愚蠢的问题。我用几个swc(库)编译我的Flex应用程序,它创建了一个swf文件。 swc的总和大约是4 MB,但生成的实际swf只有1.6 MB。这怎么可能?

谢谢!

3 个答案:

答案 0 :(得分:6)

编译器只编译应用程序需要的swc中的类,除非您指定要“嵌入”的类。因此,最后的swf尺寸较小。

答案 1 :(得分:2)

稍微扩展PeZ的响应,通常是使用“library-path”编译器参数提供给Flex应用程序编译器的SWC:

  

library-path path-element [...]

     

将SWC文件链接到生成的应用程序SWF文件。编译器仅在这些类中链接所需的SWC文件。您可以指定目录或单个SWC文件。

您可以改为使用“include-libraries”:

  

包含库[...]

     

将SWC文件中的所有类链接到生成的应用程序SWF文件,无论它们是否被使用。

     

将此选项与library-path选项进行对比,该选项仅包括在编译时引用的那些类。

您通常希望使用“library-path”来帮助保持SWF的大小尽可能小。但是,如果应用程序仅通过反射从SWC实例化类,则可能需要使用“include-libraries”。由于这些类实际上并未链接到应用程序中,因此如果使用“library-path”引用SWC,则不会包含它们,并且由于类型不可用,您将在实例化期间收到运行时错误。但是,如果您使用“include-libraries”,则该应用程序将可以使用该类(以及SWC中的所有其他类)。

答案 2 :(得分:0)

1)在swf文件中只包括必需的类
2)更多文件导致额外的标题信息,这也将略微增加大小。
为了减小flex swf的尺寸,你可以使用本文中提到的这些技术:
http://askmeflash.com/article_m.php?p=article&id=9