[编辑:短版——如果一个 SWC 的命名空间中的类比另一个少,你如何正确处理 SWC 文件中的命名空间冲突?]
我在 Flash Builder 中构建了一个相当大的 Flash 应用程序(因为在 Flash IDE 中进行编码/调试......不好),并且我有大量外部 SWC 文件链接到我的应用。到目前为止效果很好 - 文件大小偏大,但它比加载 SWF 简单得多,特别是因为我正在扩展每个 SWC 中的大多数类并以这种方式添加自定义代码(这是一个非常设计 -繁重的应用程序。)我遇到的问题是当我在多个 SWC 中拥有 Flash 组件(如 ComboBox 或 TextInput)时。最后编译的任何 SWC 都可以正常工作,但其他 SWC 将失败并出现如下错误:
TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::MovieClip@1f21adc1 to fl.controls.TextInput.
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at com.company.design.login::LoginForm()
at com.company.view::Login()[/Users/ken/Workspace/src/com/company/view/Login.as:22]
at com.company.view::Main/showLogin()[/Users/ken/Workspace/src/com/company/view/Main.as:209]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at com.company.view::Navigation/handleUIClick()[/Users/ken/Workspace/src/com/company/view/Navigation.as:88]
我一直在研究组件、ComponentShim 等,但我正碰壁。我认为这可能是因为某些组件的皮肤在源 FLA 中进行了修改,所以我尝试用默认皮肤替换它们,但这似乎没有帮助。如何确保我的组件已导入并可供我的所有类使用,但仍然能够对它们进行蒙皮并将它们包含在我的各种 FLA 中?(我从不创建它们的新实例,它们都是由我的设计师设计的。)