2011-09-29 57 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名称空间,或者是否存在实际的组件名称空间更改? –