我正在尝试为约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等。我发现如果我在其中一个源文件中声明它,那么我可以在相关项目中访问它。仅仅导入它是不够的 - 这意味着我将不得不手动声明我想要访问的每个类。一定会有更好的办法。我错过了什么?
什么样的链接类型被设定为在库项目属性您的SWC'Flex库构建路径>库Path'标签?它是否被合并到代码中? – Constantiner 2011-04-13 14:38:18
是的。我刚刚想出了一个解决方法,即将更新我的文章 - 但它仍然是一个PITA。但是,是的,“合并到代码”目前被选中。另一个选项“使用默认(外部)”已被选中 - 它无法正确使用。 – Myk 2011-04-13 14:48:15
顺便说一句,你是对的,导入指令不包括导入类到编译。但是你不必包含(声明)所有来自swc的类。如果所有的类都耦合在一起,那么你可以只声明链中相互引用的主类。你可以使用更简单的语法来链接类,而不是声明每一个类:'private static var linking:Array = [Class1,Class2];' – Constantiner 2011-04-13 15:33:46