Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex和AIR之间的代码共享_Apache Flex_Air - Fatal编程技术网

Apache flex Flex和AIR之间的代码共享

Apache flex Flex和AIR之间的代码共享,apache-flex,air,Apache Flex,Air,如您所知,我们可以基于flex构建RIA应用程序。此外,我们还可以基于AIR构建一个桌面应用程序。我有一个问题,如果我们想同时构建web和桌面应用程序。我们是否可以使用相同的代码将产品发送到web和桌面?如果您为其设计应用程序,那么在Flex和AIR版本之间共享99%的代码库应该没有问题 对于Flex/AIR版本,您需要一个单独的应用程序MXML,因为AIR使用的是WindowedApplication,而Flex使用的是应用程序 您将需要抽象您对任何纯AIR API的使用。也就是说,任何用A

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

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

  • 对于Flex/AIR版本,您需要一个单独的应用程序MXML,因为AIR使用的是
    WindowedApplication
    ,而Flex使用的是
    应用程序

  • 您将需要抽象您对任何纯AIR API的使用。也就是说,任何用AIR only图标标记的类、属性或方法( )在。如果您使用的是依赖项注入容器,例如,您可能会发现这个过程更容易

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

是的,您可以这样做。 您必须在代码中控制某些条件

请记住,如果应用程序也是flex应用程序,那么它将是一个单窗口应用程序。 我为每个项目创建了3个项目

  • 代码库(主控件是组或画布)

  • flex exporter=>构建此应用程序时,最终将得到一个flex应用程序 它在主应用程序中有一个来自#1的控件

  • air exporter=>当您构建此应用程序时,您将得到一个air应用程序 它在主窗口中有一个来自#1的控件


  • 我很惊讶还没有人这么说,但我会这样做:

  • 创建一个库项目。该项目将包括您的所有 共享代码
  • 为web部署创建Flex项目
  • 为空中部署创建空中项目
  • Flex和AIR项目都可以引用和使用库项目中的代码。AIR项目可以使用特定于AIR的功能,而不会影响web项目

    如果您需要根据是使用web项目还是AIR项目执行不同的操作,则可以在库项目中创建接口,并在主项目中实现它们以使用相应的API