apache-flex - 在 Flex 和 AIR 之间共享代码

标签 apache-flex air

如您所知,我们可以基于 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::AIRCONFIG::FLEX )

关于apache-flex - 在 Flex 和 AIR 之间共享代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4203252/

相关文章:

actionscript-3 - Flex Mobile AIR native 扩展错误

actionscript-3 - 如何在全屏时调整 Adob​​e AIR 中的舞台大小以使其位于中心?

ios - 无法使用 ADT 编译 64 位 AIR ANE

java - BlazeRS 的哪些功能在当前 Google App Engine 上不可用?

apache-flex - 由于 Unresolved 依赖关系,grails 安装插件 blazeds 失败

ios - AIR iOS 应用程序中的文本 URL 不可选择

apache-flex - Air Flex 最大同时上传 URL 请求数

android - AIR/as3 阶段按键监听器覆盖输入文本字段

apache-flex - 在创建中使用命令行参数 完成

actionscript-3 - 如何构建与从 Flex 3.5B 到 Flex 4.6 的客户端应用程序兼容的 Flex 库?