我有一个组件库。它有一个如下所示的清单文件:
<?xml version="1.0"?>
<componentPackage>
<component id="AutoComplete" class="be.edge.components.AutoComplete" />
<!-- more components left out for brevity -->
</componentPackage>
我使用这些编译器设置通过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>
但是: FlashBuilder会自动创建前缀'ns'。我想将其定制为'e'。如何使FlashBuilder默认使用此自定义前缀?
我有两个原因:
修改
我还将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>
答案 0 :(得分:6)
此使用工作:
在/ src文件夹中创建一个名为design.xml
的文件:
<?xml version="1.0" ?>
<design>
<namespaces>
<namespace prefix="mangos" uri="http://com.mangofactory.sample/mxml/2010" />
</namespaces>
</design>
在/ src文件夹中创建一个名为manifest.xml
的文件:
<componentPackage>
<component id="MyClass" class="com.mangofactory.framework.MyClassTag"/>
</componentPackage>
在构建属性中配置命名空间URL等:
假设导致Flash构建器提示如下:
<?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>
(请注意,该类显示为MyClass
而不是MyClassTag
,命名空间显示为mangos
)
但是,我只是尝试这样做,虽然该类已正确重命名,但命名空间显示为ns
。我知道这曾经在FB3.x中运行,也许我已经忘记了一步,或者FB4.5已经破坏了它。
答案 1 :(得分:0)
如果您只是将xmlns:ns
更改为xmlns:e
或xmlns:foo
,那么MXML解析器将会接收更改。改变并不是那么困难,我认为没有办法在默认情况下改变它生成命名空间的方式。