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