将 Flex 3 应用程序迁移到 Flex 4 时,步骤并不复杂。除了一些缺陷修复以及默认主题稍有变化,您的应用程序通常可以像 Flex 3 中那样正常运行(或更好)。但您必须注意几点。
请务必针对 Flash Player 10 进行编译。Flex 4 SDK 需要 Flash Player 10 支持。
CSS 字体选择器将 Flex 类命名为 style。例如,以下是 Button 和 DateField 的字体选择器:
Button {
cornerRadius: 10;
}
DateField {
color: #780800;
}
从 Flex 4 SDK 开始,当应用程序使用字体选择器时,需要命名空间。如果您只在 Flex 应用程序中使用 MXML 2006 命名空间,请将以下默认命名空间声明添加到 CSS 中:
<mx:Style>
@namespace "http://www.adobe.com/2006/mxml";
…
</mx:Style>
如果在应用程序中使用多个命名空间,您需要在 CSS 中提供各个命名空间。有关示例,请参阅本文稍后部分中的 Flex 4 中的命名空间与包。
此外,如果应用程序使用 StyleManager.getStyleDeclaration("Button") 等方法,字体选择器必须包含它的包。例如,对 getStyleDeclaration() 的调用将改为 StyleManager.getStyleDeclaration("mx.controls.Button")。
Flex 3 (MX) 组件的默认主题现在是 Spark 主题。因此,当您使用 Flex 4 SDK 编译应用程序时,它的外观和大小可能有所不同。但是,如果要使用 Flex 3 的外观,您还是可以做到的,因为 Flex 4 包含 Flex 3 的 Halo 主题。要使用 Halo 主题进行编译,您可以使用附加编译器参数 -compatibility-version=3.0。在 Flash Builder 4 中,您可以在“Properties Panel”(属性面板)中这样做。在“Properties Panel”(属性面板)中,选择“Flex Compiler”(Flex 编译器)并单击“Use Flex 3 compatibility mode”(使用 Flex 3 兼容性模式)复选框(请参阅图 1)。
您也可以通过“Properties”(属性)->“Flex Theme”(Flex 主题)面板将主题从默认 Spark 主题改为 Halo。在“Flex Theme”(Flex 主题)面板中,单击 Halo 主题(请参阅图 2)。
如果您选择使用新的 Spark 主题,请注意许多可用于 Halo 主题的样式无法用于 Spark 主题。Spark 主题只支持数量有限的样式。要了解 Spark 外观可以使用哪些样式,您应当参阅 ASDoc。将为每个组件列出的各个样式指定一个“主题”。如果未指定主题,表示该样式既可用于 Halo,也可用于 Spark 主题。Flex 4 还加入了一种设计用于快速模型的线框外观。线框主题不支持样式更改。
除了主题更改外,Flex 4 应用程序的默认预下载器也已经改为 mx.preloaders.SparkDownloadProgressBar。这个更轻量级的预下载器可以缩短一些启动时间。如果要使用 Flex 3 预下载器,您只需更改一行代码。在 Application
标签中添加以下内容:preloader="mx.preloaders.DownloadProgressBar"
。
如果要将应用程序从 Flex 3 迁移到 Flex 4 ,我不建议将各个 Flex 3 MX 组件替换为它们对应的 Flex 4 组件。这样投入时间可能并不是一个好方法。您应当为新的应用程序转而使用 Flex 4 组件架构。
在 Flex 3 中,自动库位于 {sdk}/frameworks/libs 中,而在 Flex 4 中,它位于 {sdk}/frameworks/libs/automation 中。用户应当确保 frameworks/libs 中没有自动库副本。