如您所知,我们可以基于 flex 构建 RIA 应用程序。此外,我们还可以构建基于 AIR 的桌面应用程序。我有一个问题,如果我们想同时构建 Web 和桌面应用程序。我们可以使用相同的代码将我们的作品发送到网络和桌面吗?
最佳答案
如果您为此设计应用程序,那么在 Flex 和 AIR 构建之间共享 99% 的代码库应该没有问题。
您将需要针对 Flex/AIR 版本的单独应用程序 MXML,因为 AIR 使用
WindowedApplication
Flex 使用Application
您需要抽象化您对任何 AIR-only API 的使用。也就是说,任何标有 AIR-only 图标 (
) 在 the Online Documentation .如果您使用像 Swift Suspenders 这样的依赖注入(inject)容器,您可能会发现此过程更容易。 .
或者,您可以将服务定义 拆分到两个不同的源代码树中。这将导致您的 AIR 项目和 Flex 项目共享一个源路径,但也有自己的源路径。这样,访问
com.application.MyService
的代码将在 AIR 和 Flex 之间共享,但是com.application.MyService
的实现会根据使用的“服务源路径”而有所不同。您可能会发现为每个构建配置编译器标志很有用,例如
-define+=CONFIG::AIR
.这允许您使用条件编译,以便您可以为两个构建编译相同的文件,但包括 AIR 构建的特定代码。
这是一个条件编译的例子:
public function getMyService() : IMyService
{
CONIFG::AIR
{
return new MyServiceThatUsesAnAIROnlyAPI();
}
return new FallbackServiceForFlex();
}
不幸的是,没有办法“否定”条件标志(即 !CONFIG::AIR
),因此您要么需要明智地使用它,要么包括两个标志( CONFIG::AIR
和 CONFIG::FLEX
)
关于apache-flex - 在 Flex 和 AIR 之间共享代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4203252/