如何在 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

如何在 Flex 中查找对象的样式继承?

在 Flex 中使用 Flash 组件 SWC 文件

在 ActionScript 3.5/Flex 中,如何将边框应用于用户单击的任何 UI 组件或容器?

禁用在Flex中选择CheckBox