2011-06-23 25 views
5

我有一個組件庫。它有一個manifest文件,看起來像這樣:我該如何讓FlashBuilder使用自定義命名空間前綴

<?xml version="1.0"?> 
<componentPackage> 
    <component id="AutoComplete" class="be.edge.components.AutoComplete" /> 
    <!-- more components left out for brevity --> 
</componentPackage> 

我編譯庫通過FlashBuilder這些編譯器設置:

FlashBuilder library compiler namespace inputs

當我使用編譯庫在其他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默認使用這個自定義前綴?

我有兩個方面的原因:

  1. 「NS」沒有說什麼:它只是說命名空間已使用的,而不是命名空間。
  2. 當我使用其他庫也開始與URL像'library:// ns。' 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> 

回答

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等: enter image description here

應該引起閃光助洗劑,以提示如下:

<?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已經打破了它。

+0

我試過了,希望它會奇蹟般地在我的系統上工作。但事實並非如此。你不應該在某處引用design.xml嗎?否則,編譯器無法知道它。 (我會添加更多的編譯器信息到我的問題。) – RIAstar

+0

我也嘗試在我的config.xml中的'namespace'標記添加'prefix =「e」'無效(儘管我沒有收到錯誤)。 – RIAstar

+4

啊哈!剛發現缺少的部分:您必須通過勾選'Flex Library Build Path'中的'Assets'選項卡下的複選框來將design.xml文件包含在swc中。你讓我在那裏,所以我會接受你的答案。 – RIAstar

0

如果你只需要改變xmlns:nsxmlns:exmlns:foo然後MXML解析器將會接受更改。這並不是很難改變,我認爲沒有辦法改變它默認生成名稱空間的方式。

+0

我知道,但我只是厭倦了每次創建一個新的mxml組件而改變它。 – RIAstar

+0

我在偏好中徘徊,我沒有看到任何可以讓你改變這一點的東西。你可能需要替換插件中的一些java類來修改這種行爲。希望有人會爲你提出一個更好的答案。 –

+0

不幸的是,FlashBuilder不是開源的,所以這會非常困難。一些修改代碼模板也許? – RIAstar

相關問題