如何将Flex库中的mxml组件包含到另一个Flex项目中?

时间:2013-02-25 19:45:47

标签: flex mxml

我创建了一个Flex库项目,其中包含一个带有一个componnent(一个按钮)的.MXML文件。 它在myLibrary.views包中名为Button.mxml。

然后我创建了一个不同的Flex Mobile项目,其中我想要包含我的库项目中的按钮。  该项目引用先前创建的库。

我无法找到如何实现这一目标的答案。

我可以像mxml componnent一样添加吗?

   <?xml version="1.0" encoding="utf-8"?>
  <         s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 

           applicationDPI="240">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<fx:Script>
    <![CDATA[
        import myPackage.views.Button; // this is the package containing Button.mxml

    ]]>
</fx:Script>
 <myPackage.Views.Button id="myButton" /> // is this possbile somehow ???

     </s:Application>

谢谢!

1 个答案:

答案 0 :(得分:3)

首先确保将其他项目添加到库路径中。您可以通过将生成的SWC添加到libs文件夹或将其添加到库路径来完成此操作。如果两个项目都在同一个Flash Builder工作区中,则可以使用库选项卡上的“添加项目”按钮。

接下来,要在MXML中使用新的Button文件,必须在顶级MXML标记中导入命名空间;像这样的东西:

 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:myPackage="myPackage.views.*"
               applicationDPI="240">

语法与Flex为自己的包非常相似。除非您可能尚未完成创建命名空间URL的过程,因此您使用包名称。在大多数情况下,没有创建命名空间URL是很好的,它比它的价值更令人头疼。

然后您可以使用这样的自定义按钮:

<myPackage:Button id="myButton" />

这遵循与其他Flex组件相同的语法;这是namespace:ComponentName

您无法在ActionScript中基于import语句在MXML中使用Component;但你有正确的想法。