如何在 Flex 中使用 UIComponent/Flash
Posted
技术标签:
【中文标题】如何在 Flex 中使用 UIComponent/Flash【英文标题】:how to use UIComponent/Flash in Flex 【发布时间】:2010-12-05 06:09:38 【问题描述】:我是 Flash/Flex 的新手。 我想使用我在 Flash 中创建的扩展 fl.core.UIComponent 的组件。如何在 Flex 中使用它?我只是将它导出为 swc,还是必须使用 Flash Flex 3 套件将其转换为 UIMovieClip。这听起来不对。
我希望能通过几个简单的步骤来描述该过程。 谢谢 萨诺兰
【问题讨论】:
【参考方案1】:您可以将文件发布为 .swf 并使用 SWFLoader 加载它,只需记住路径是相对于您的运行/调试目录的。
我的理解是 swc 文件通常是库文件,而不是可视化组件,因为您希望在编译时 (swc) 而不是在运行时 (swf) 包含库。
var loader = new SWFLoader();
// set autoload to false just so we KNOW when it loads. Also prevents
// us from accidently loading it twice by calling load() later
loader.autoLoad = false;
loader.addEventListener(Event.INIT, function (nt:Event)
// Remove event listener so can be garbage collected
event.currentTarget.removeEventListener(event.type, arguments.callee);
// note we can the loader, rather than
// loader.content
someIVisualElementContainer.addElement(loader);
);
// relative to bin-debug or bin-release
loader.source = "movie.swf";
loader.load();
【讨论】:
我的示例假设使用 Flex4,即使您说的是 Flex3,只需将 addElement 更改为 addChild 即可获得 Flex3 mx 组件。【参考方案2】:只需将 .as 文件导入您的 flex 应用程序即可。使用 rawChildren.addChild
而不是普通的 addChild
将其添加到显示列表中,因为 flex 会覆盖默认的 addChild
方法以仅接受 mx.core.UIComponent
及其派生类。
更新:您不能在 flex 中使用 FLA,因此如果您的组件不仅仅是扩展 fl.core.UIComponent 的 AS 类,您应该将其导出到 SWC 或在运行时将相应的 SWF 加载到 flex 应用程序。
【讨论】:
请注意,如果您这样做,您将无法使用 Flash IDE 来创作可视化组件。 IE,没有 .fla 文件。 你不能在 flex 中使用 fla,对吗? 我以为 OP 是在询问使用 AS 类扩展核心 uicomponent。如果它包含 FLA,您应该导出为 SWC 或在运行时加载 SWF。以上是关于如何在 Flex 中使用 UIComponent/Flash的主要内容,如果未能解决你的问题,请参考以下文章
Flex:将未实现的 UIComponent 渲染到 BitmapData?
在 Flex 3 中将 UIComponent 添加到 Canvas 和 Tree