2011-04-13 29 views
0

我正在尝试为约10个相关资产设置生产环境。视觉和其他方面的某些要素将在这10个资产之间共享。我在Flash Builder 4中将每个项目都视为自己的Pure AS3项目。在Flex库项目中使用.swc

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

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

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

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

我打算继续挖掘,但我想把它放在这里,以防其他人遇到这些问题。任何人都知道我在做什么错了?

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

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

+0

什么样的链接类型被设定为在库项目属性您的SWC'Flex库构建路径>库Path'标签?它是否被合并到代码中? – Constantiner 2011-04-13 14:38:18

+0

是的。我刚刚想出了一个解决方法,即将更新我的文章 - 但它仍然是一个PITA。但是,是的,“合并到代码”目前被选中。另一个选项“使用默认(外部)”已被选中 - 它无法正确使用。 – Myk 2011-04-13 14:48:15

+1

顺便说一句,你是对的,导入指令不包括导入类到编译。但是你不必包含(声明)所有来自swc的类。如果所有的类都耦合在一起,那么你可以只声明链中相互引用的主类。你可以使用更简单的语法来链接类,而不是声明每一个类:'private static var linking:Array = [Class1,Class2];' – Constantiner 2011-04-13 15:33:46

回答

1

我遇到了一些问题,我们从SDK swc 1获得A类,从SDK swc 2获得B类(blendMode错误结果),最后我们必须保证所有的依赖关系都是用特定版本的SDK编译(也不好玩)。我想这听起来像是你想要一个包含新库所依赖的其他库的源的库。

基本上每个swc都是一个目录文件,ActionScript(AS)文件的ActionScript Bytecode(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路径。 ./mycomponents/components/local -include类CustomCellRendererComponent -directory =真 -debug =假 -output ../libraries/CustomCellRenderer

从这个页面:

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

在这个一对夫妇的想法也因为我一直在四处寻找,1这将是可怕的低效在空间上,因此所有的工作只包括你正在使用的类,2如果使用上面的方法我可能会写一个java应用程序,它将遍历所有类名的项目文件夹,所以我可以让它生成项目空间中所有类的列表。

谢谢你听出我的想法(仍然是WIP :),

肖恩

+0

谢谢Shaun,听起来你在正确的轨道上。今天下午我会回到这里,所以我们会看到它给我带来了什么! – Myk 2011-04-14 14:03:31

相关问题