以下列方式嵌入任何大小的资产时 -
[Embed(source="../../assets/Assets.swf", symbol="LargeButton")]
public static const ButtonAsset : Class;
看起来生成的SWF大小会上升~2.8KB(除了实际嵌入的任何资产的大小)。
所以我有一些相关的问题:
这是因为flex_sdk / frameworks / libs / core.swc必须是静态链接的吗?有没有办法绕过这个限制,也许是通过挑选必要的文件并将它们编译成SWC文件?请注意,在应用程序中我写文件大小是至关重要的。
是否有一个命令/插件允许将矢量图形(在Flash Professional创作环境中绘制)转换为原始ActionScript 3?
强制使用此功能的用例是改进的工作流程 - 允许设计人员在Flash Professional中绘制资源,编译为资产SWF,然后能够嵌入这些资产(而不是花时间在运行时加载它们,或者我自己努力用ActionScript编写它们。
答案 0 :(得分:1)
链接资源的方式不是最佳的,虽然2.8K听起来有点过多的开销,但让我们看看......
首先,最好是嵌入类定义而不是常量/变量定义。
package /* ... */ {
[Embed(source="../../assets/Assets.swf", symbol="LargeButton")]
public class ButtonAsset extends Sprite { /* class definition goes here */ }
}
这不会创建FlexSpriteAsset或它通常创建的w / e。但是,Flex编译器并不总是能够以这种方式链接资产。有时它需要创建一些额外的类,特别是如果动画或线条样式用于从Flash编译的原始类中。此功能在不同的MXMLC版本中也有所改变,因此如果不能与当前版本一起使用,您可能会有更好的运气。
有这个项目:http://code.google.com/p/hxswfml/允许从XML描述创建SWF图形 - 如果图形不是很复杂,但尺寸很重要,可能会很好。