0

我有一些工作的 actionscript3 代码,我想作为一个库来展示。没有皮肤或组件,只有纯 as3 类。所以我创建了一个 SWC,将所有代码放在那里,将其打包为 SWC。代码本身依赖于其他几个 SWC,因此我将它们作为合并依赖项包含在内,因此生成的 SWC 将其全部包含在内(大小很烂,但可以肯定)。检查链接器报告以确保一切正常。

但是,当我尝试在 Flex 应用程序(甚至可以是空的)中使用此 SWC 时,我会遇到如下奇怪的运行时错误:

ReferenceError: Error #1065: Variable _FormItemStyle__embed_css_Assets_swf_mx_containers_FormItem_Required_527421487 is not defined.

at flash.display::MovieClip/nextFrame()
at mx.managers::SystemManager/deferredNextFrame()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\managers\SystemManager.as:319]
at mx.managers::SystemManager/preloader_initProgressHandler()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\managers\SystemManager.as:2945]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.preloaders::Preloader/timerHandler()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\preloaders\Preloader.as:398]
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()

我不知道这意味着什么以及我错过了什么 o_O(显然库打包有问题)。我想这是非常愚蠢的事情,因为数以百万计的开发人员可以毫无问题地创建自己的 SWC。我的 Flex SDK 是 3.2.0,我使用 Maven 和 flex-mojos(但这没关系,因为我尝试纯粹使用 Flash Builder 构建 SWC 并获得相同的结果)并且我构建了 flash-player 9(但是也没关系,我在 10 楼也有同样的狗屎建筑)。

有人可以帮我解决这个问题吗?

更新。

显然它与传递依赖有关,如果我将我的库所依赖的所有 SWC 添加到最终的 Flex 应用程序中,一切正常。所以现在的问题是:如果不这样做,我如何让它工作?为什么即使这些传递依赖项合并到我的 SWC 中它也不起作用?

4

1 回答 1

0

看起来您正在尝试使用运行时共享库​​或外部作为依赖项的链接。尝试将它们更改为合并到代码中。在 Flash Builder 中,它位于Properties -> Flex Library Build Path -> Library Path. (虽然我不确定如何使用 Maven 来做到这一点)。这样,这些类的字节码将包含在 swc 中,并且不会有“传递依赖”。

于 2011-05-03T23:53:06.353 回答