在Flex库项目中使用.swc

时间:2011-04-13 14:31:55

标签: flash flex adobe builder swc

我正在尝试为大约10个相关资产设置一个生产环境。视觉和其他方面的某些元素将在10个资产之间共享。我将每个人视为Flash Builder 4中自己的Pure AS3项目。

每个资产都有一个关联的.fla,它将.swc输出到该资产的libs文件夹中 - 最终编译将通过ant完成,顶级源是每个Flash中的主.as文件建造者项目。

由于某些元素在多个资源之间共享,因此我在工作区中创建了一个Flex库项目。这个库项目有一个标准结构的/ src文件夹,以及我坚持使用的/ lib /文件夹,例如greensock的TweenLite。

除了源代码和第三方.swc之外,Library项目还有一个FLA,它将.swc导出到/ lib /文件夹中。

问题在于:我无法在相关项目中看到来自.swc的库导出。理论上,我从Flex库项目的.fla库中导出的每个类都应该编译到库项目的.swc中。我发现事实并非如此,我不清楚原因。

我将继续挖掘,但我想把它扔到这里以防其他人遇到这些问题。谁知道我做错了什么?

编辑:显然我的greensock .swc也没有编译成最终输出。昨天是的。我不确定发生了什么变化。我想我的问题就是:我怎样才能确保我的Flex库项目的构建路径中包含的.swc文件将所有类都包含在FLP生成的最终.swc中?

编辑2:我发现了一种可怕的解决方法。现在我已经在我的src文件夹中创建了一个类,并且我正在声明我想要包含在我的任何.swc中的任何内容 - 例如,public var tweenLite:TweenLite,public var logo:Logo等。我发现如果我在我的一个源文件中声明它,那么我就可以在相关项目中访问它。单独导入它是不够的 - 这意味着我必须手动声明我想要访问的每个类。肯定有更好的办法。我错过了什么?

1 个答案:

答案 0 :(得分:1)

我遇到了一些问题,我们从SDK swc 1获得了A类,从SDK swc 2获得了Class B(blendMode错误结果),最后我们必须保证所有的依赖都被编译使用特定版本的SDK(也没有乐趣)。我认为这听起来像是一个包含新库所依赖的所有其他库的源代码的库。

基本上每个swc都是一个目录文件,ActionScript(AS)文件的ActionScript字节码(ABC)压缩成一个zip,所以你希望它将这两个部分合并为一个swc。

使用运行时共享库​​(RSL)意味着不是从swc中提取字节码并在编译期间将其包含在swf中,而是在运行时加载swc(在以这种方式打包时称为swz)。缺点是它将所有类存储到swz中,而不是仅在编译时完成所需的AS的字节码。因此,通过RSL进行链接可以获得您想要的结果,但是您必须从库中生成swz文件。您可能仍然需要做一些荒谬的事情,例如在您的swz(从其他swcs)中引用您想要的所有内容,但我相信您应该能够以某种方式解决这个问题...我会继续环顾四周为了获得更好的解决方案,如果找到一个,我们将对其进行编辑:

http://tv.adobe.com/watch/adc-presents/creating-runtime-shared-libraries/

编辑1:

还发现了这个:

compc -source-path ../mycomponents/components/local     -include-classes CustomCellRendererComponent     -directory =真     -debug = FALSE     -output ../ libraries / CustomCellRenderer

从这个页面:

http://livedocs.adobe.com/flex/3/html/help.html?content=rsl_01.html#168690

关于这一点的一些想法,就像我一直在寻找,1这在空间方面将是非常低效的,因此所有工作只包括你正在使用的类,2如果使用方法上面我可能会写一个java应用程序,它将遍历所有类名的项目文件夹,这样我就可以生成项目空间中所有类的列表。

感谢您听到我的想法(仍然是WIP :),

肖恩