2011-09-29 50 views
2

我有一個Flash Builder項目,我正在從SDK 4.1.0遷移到4.5.1。這是一個相對容易的改變(我們正在使用maven來編譯我們的版本,並且在更新到4.5.1依賴關係後能夠獲得成功的版本)。從4.1.0升級到Flex SDK 4.5.1會導致某些mx組件的命名空間編譯錯誤

如上所述,該項目使用maven和flexmojos構建得很好。問題是在Flash Builder中打開項目時。 maven項目被導入,然後通過運行maven flexmojos:flexbuilder build命令將其設置爲flex項目。

問題在於,使用s:命名空間指定的某些mx組件不再被IDE接受,並導致錯誤。例如,對於下面的編譯:

<s:states> 
    <s:State name="normal" /> 
    <s:State name="disabled" /> 
</s:states> 

s:State必須改爲mx命名空間:

<s:states> 
    <mx:State name="normal" /> 
    <mx:State name="disabled" /> 
</s:states> 

這只是一個例子,僅發生於特定的火花命名空間中的組件。爲什麼是這樣? 爲什麼使用Flex SDK 4.1.0編譯爲OK,而不是使用Flex SDK 4.5.1,以及必需的命名空間更改的原因是什麼?

回答

3

我發現使用FlexMojos時出現同樣的問題,因爲Adobe似乎爲mx組件(如State和Spacer)指定了spark命名空間。另外,如果您使用的是flexmojos:flexbuilder,則表示您還使用舊版本的FlexMojos(3.8?)。現在有4.0版本(RC2),但是,flexbuilder的目標現在已經被刪除。

Anywho,回到你的問題,我看到它在我的項目中的另一種方式(s:Spacer在Flash Builder中工作,而不是在FlexMojos中)。就我個人而言,我覺得這些名稱空間不應該相交,作爲開發人員,只需指定確切的名稱空間而不用擔心名稱空間欺騙。

+0

雖然聽到我並不是唯一一個看到這個問題的人,但很高興能夠確認Adobe對他們的組件所做的確切更改。名稱空間是否明顯改變,是因爲Adobe在之前「翻譯」了xmlns名稱空間,或者是否存在實際的組件名稱空間更改? –

相關問題