2010-11-17 149 views
3

如您所知,我们可以构建基于flex的RIA应用程序。另外,我们可以构建基于AIR的桌面应用程序。我有一个问题,如果我们想要同时构建web &桌面应用程序。我们是否可以使用相同的代码将我们的产品发送到web &桌面?在Flex和AIR之间共享代码

回答

5

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

  • 您需要实现Flex/AIR版本独立的应用程序MXML作为AIR使用WindowedApplication和Flex使用Application

  • 您需要将您的抽象仅任何AIR的API的使用。也就是说,the Online Documentation中标有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

0

是的,你可以做到这一点。 有一些条件必须在代码中进行控制。请记住,如果应用程序也是一个Flex应用程序,那么它将是一个单独的窗口应用程序。 每一个项目我做需要这个,我创建3个项目

  1. 代码库(主控制是一组或帆布)

  2. 柔性出口=>当你建立这一点,你将结束柔性应用 它有从#1的主应用程序内的控制

  3. 空气出口=>时生成此你最终会与空气应用 它有从#1在主窗口内的控制。

1

我很惊讶,没有人说这些事,但这是我会怎么做:

  1. 创建库项目。该项目将包括所有 共享代码。
  2. 创建Web部署
  3. Flex项目为AIR部署

无论是Flex和AIR项目可以参考和在库项目中使用的代码创建一个AIR项目。该AIR项目可以使用AIR特定的功能,而不会影响Web项目。

如果您需要执行不同的根据是否使用web项目或AIR项目,你可以在图书馆项目中创建界面,并在主项目使用相应的API实现它们不同的动作。

相关问题