当前位置:  开发笔记 > 编程语言 > 正文

在Flex和AIR之间共享代码

如何解决《在Flex和AIR之间共享代码》经验,为你挑选了1个好方法。

如您所知,我们可以构建基于flex的RIA应用程序.此外,我们可以构建基于AIR的桌面应用程序.我有一个问题,如果我们想要同时构建Web和桌面应用程序.我们可以使用相同的代码将我们的产品运送到网络和桌面吗?



1> Richard Szal..:

如果您为它设计应用程序,那么在Flex和AIR版本之间共享99%的代码库应该没有问题.

您将需要一个单独的应用程序MXML用于Flex/AIR版本,因为AIR使用WindowedApplication和Flex使用Application

您将需要抽象使用任何AIR-only API.也就是说,在线文档中标有AIR-only图标(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/images/AirIcon12x12.gif)的任何类,属性或方法.如果您使用像Swift Suspenders这样的依赖注入容器,您可能会发现此过程更容易.

或者,您可以将服务定义拆分为两个不同的源树.这将导致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)

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有