我有一个 Flash 构建器项目,正在从 SDK 4.1.0 迁移到 4.5.1。这是一个相对容易的更改(我们使用 Maven 进行构建,并且在更新到 4.5.1 依赖项后能够成功构建)。
如上所述,该项目使用 Maven 和 Flexmojos 构建得很好。问题是在 flash builder 中打开项目时。导入maven项目,然后通过运行maven flexmojos:flexbuilder
构建命令将其设置为flex项目。
问题在于,当 IDE 不再接受使用 s: 命名空间指定的某些 mx 组件时,会导致错误。例如,要编译以下内容:
<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>
这只是一个示例,并且仅发生在某些 Spark 命名空间组件中。为什么是这样? 为什么使用 Flex SDK 4.1.0 可以编译正常,但使用 Flex SDK 4.5.1 则不行,以及导致必要的命名空间更改的原因是什么?
最佳答案
我在使用 FlexMojos 时也发现了同样的问题,因为 Adobe 似乎做了一些小技巧,为 mx 组件(如 State 和 Spacer)指定 Spark 命名空间。
此外,如果您使用的是 flexmojos:flexbuilder
,则意味着您还使用的是旧版本的 FlexMojos(3.8?)。现在有版本 4.0 (RC2),但是,flexbuilder 目标现在已被删除。
Anywho,回到你的问题,我在我的项目中以另一种方式看待它(s:Spacer 在 Flash Builder 中工作,而不是在 FlexMojos 中)。就我个人而言,我认为这些命名空间不应该相交,并且作为开发人员,更容易指定确切的命名空间,而不必担心命名空间的欺骗。
关于apache-flex - 从 4.1.0 升级到 Flex SDK 4.5.1 会导致某些 mx 组件出现命名空间编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7604441/