0

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

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

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

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

这是问题所在:我无法在我的相关项目中看到来自该 .swc 的库导出。理论上,我从 Flex 库项目的 .fla 库中导出的每个类都应该编译到库项目的 .swc 中。我发现情况并非如此,我不清楚为什么。

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

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

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

4

1 回答 1

1

我遇到了一些问题,这些问题与我们从 SDK swc 1 获取 Class 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=true -debug=false -output ../libraries/CustomCellRenderer

从这个页面:

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

我一直在环顾四周,对此也有一些想法,1这在空间方面将非常低效,因此所有工作都只包括您正在使用的类,2如果使用上面的方法我会可能会编写一个Java应用程序,它将遍历所有类名的项目文件夹,这样我就可以让它生成项目空间中所有类的列表。

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

肖恩

于 2011-04-13T21:49:32.317 回答