有没有办法将flex中的标签映射到多个目录中的组件?

时间:2009-03-04 03:04:44

标签: xml flex namespaces xml-namespaces

给定一个flex应用程序或模块,您可以按如下方式指定自定义xml命名空间:

<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:custom="custom.namespace.*">

然后我们可以使用自定义标记引用目录custom / namespace /中的mxml组件。例如,如果我在自定义/命名空间目录中有组件Custom1和Custom2,我可以像这样引用它们:

<custom:Custom1/>
<custom:Custom2/>

有没有办法将多个目录映射到同一个标签上?也就是说,如果我在自定义/命名空间的子目录中有组件,比如带有组件SubCustom1的custom / namespace / sub,有没有办法修改flex文档,以便自定义标签可以引用SubCustom1?

请注意,我找到的一个解决方法是为每个目录添加一个新标记(例如xmlns:custom.sub =“custom.namespace.sub。*”,然后:

<custom.sub:SubCustom1>

但这个解决方案看起来像是一个kludge。

2 个答案:

答案 0 :(得分:2)

要在flex中创建自定义命名空间,您需要

1)创建自定义清单文件:例如

<?xml version="1.0" encoding="utf-8" ?>
<componentPackage>

    <component id="Accordion" class="mx.containers.Accordion"/>
    ....

2)在flex-compiler.xml文件中添加类似以下的内容:

<compiler>
    ...
      <namespaces>
         <!-- Specify a URI to associate with a manifest of components for use as MXML -->
         <!-- elements.                                                                -->
         <namespace>
            <uri>http://mycustomnamespace.com</uri>
            <manifest>custom-manifest.xml</manifest>
         </namespace>
      </namespaces>
</compiler>

您可以阅读更详细的解释here

此问题也得到了解答here

答案 1 :(得分:0)

命名直接遵循命名空间的XML规范。如果要更改custom以引用子目录,请更改名称空间声明:

xmlns:custom="custom.namespace.*"

xmlns:custom="custom.namespace.sub.*"