如何使FlashBuilder使用自定义命名空间前缀

RIA*_*tar 5 apache-flex namespaces manifest flash-builder

我有一个组件库.它有一个清单文件,如下所示:

<?xml version="1.0"?>
<componentPackage>
    <component id="AutoComplete" class="be.edge.components.AutoComplete" />
    <!-- more components left out for brevity -->
</componentPackage>
Run Code Online (Sandbox Code Playgroud)

我使用这些编译器设置通过FlashBuilder编译库:

FlashBuilder库编译器命名空间输入

当我在其他FlashBuilder项目中使用编译库时,一切都按预期工作.我得到代码完成,当我从代码完成中选择一个建议时,命名空间属性会自动添加到组件中,如下所示:

<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:ns="library://ns.edge.be" >

    <ns:AutoComplete />

</s:Skin>
Run Code Online (Sandbox Code Playgroud)

但是: FlashBuilder会自动创建前缀'ns'.我想将其定制为'e'.如何使FlashBuilder默认使用此自定义前缀?

我有两个原因:

  1. 'ns'没有说什么:它只是说已经使用了一个命名空间,而不是什么命名空间.
  2. 当我使用其他库也以"library:// ns"之类的url开头时.FlashBuilder可能会开始编号前缀以解决冲突(ns,ns1,ns2等),这将更加令人困惑.

编辑:

我还将config.xml传递给编译器,该编译器具有与命名空间相关的以下声明:

<compiler>
    <namespaces>
        <namespace>
            <uri>library://ns.edge.be</uri>
            <manifest>manifest.xml</manifest>
        </namespace>
    </namespaces>
</compiler>

<include-namespaces>
    <uri>library://ns.edge.be</uri>
</include-namespaces>
Run Code Online (Sandbox Code Playgroud)

Mar*_*itt 6

曾经工作:

design.xml在/ src文件夹中创建一个名为的文件:

<?xml version="1.0" ?>
<design>
    <namespaces>
        <namespace prefix="mangos" uri="http://com.mangofactory.sample/mxml/2010" />
    </namespaces>
</design>
Run Code Online (Sandbox Code Playgroud)

manifest.xml在/ src文件夹中创建一个名为的文件:

<componentPackage>
        <component id="MyClass" class="com.mangofactory.framework.MyClassTag"/>
</componentPackage>
Run Code Online (Sandbox Code Playgroud)

在构建属性中配置命名空间URL等: 在此输入图像描述

应该会导致Flash Builder提示如下:

<?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" 
               xmlns:mx="library://ns.adobe.com/flex/mx"
               xmlns:mangos="http://com.mangofactory.sample/mxml/2010">
    <fx:Declarations>
        <mangos:MyClass />
    </fx:Declarations>
</s:Application>
Run Code Online (Sandbox Code Playgroud)

(请注意,该类显示为MyClass而不是MyClassTag,并且命名空间显示为mangos)

但是,我只是尝试这样做,虽然该类已正确重命名,但命名空间显示为ns.我知道这曾经在FB3.x中工作过,也许我已经忘记了一步,或者FB4.5已经破坏了它.

  • 啊哈!刚刚找到了缺失的部分:您必须在swc中包含design.xml文件,方法是勾选"Flex Library Build Path"中"Assets"选项卡下的复选框.你让我在那里,所以我会接受你的回答. (4认同)
  • 我刚刚在FB 4.7中尝试了这个并且它似乎被破坏了......也许是因为design.xml用于"设计视图"仪器,这个功能从4.7开始被删除了?有没有人在FB 4.7上工作? (2认同)