如您所知,我们可以基于Flex构建一个RIA应用程序。此外,我们还可以基于AIR构建桌面应用程序。我有一个问题,如果我们想要同时建立网络和桌面应用程序。我们可以使用相同的代码将我们的产品运送到Web和桌面吗?
e3bfsja21#
如果您的应用程序是为它设计的,那么在您的Flex和AIR版本之间共享99%的代码库应该没有问题。
WindowedApplication
Application
com.application.MyService
-define+=CONFIG::AIR
以下是条件编译的一个示例:
public function getMyService() : IMyService { CONIFG::AIR { return new MyServiceThatUsesAnAIROnlyAPI(); } return new FallbackServiceForFlex(); }
不幸的是,没有办法‘否定’一个有条件的标志(即。!CONFIG::AIR),因此您需要明智地使用它,或者包括两个标志(CONFIG::AIR和CONFIG::FLEX)
!CONFIG::AIR
CONFIG::AIR
CONFIG::FLEX
nukf8bse2#
我很惊讶还没有人这么说,但我会这么做:
1.创建库项目。该项目将包括您的所有共享代码。1.创建用于Web部署的Flex项目1.创建空中部署的AIR项目
Flex和AIR项目都可以引用和使用库项目中的代码。AIR项目可以使用特定于AIR的功能,而不会影响Web项目。
如果您需要根据是使用Web项目还是AIR项目来执行不同的操作,您可以在库项目中创建接口,并在主项目中实现它们,以使用各自的API。
ma8fv8wu3#
是的,你能做到的。在代码中必须控制某些条件。
请记住,如果应用程序也是Flex应用程序,那么它将是单一窗口应用程序。对于我做的每个需要这个的项目,我创建了3个项目
1.代码库(主控件为组或画布)1.flex exporter=>当您构建此应用程序时,您将得到一个flex应用程序,它在主应用程序中具有一个来自#1的控件1.Air Exporter=>当您构建此应用程序时,您将得到一个Air应用程序,它在主窗口中有一个来自#1的控件。
3条答案
按热度按时间e3bfsja21#
如果您的应用程序是为它设计的,那么在您的Flex和AIR版本之间共享99%的代码库应该没有问题。
WindowedApplication
,而Flex使用Application
com.application.MyService
的代码将在AIR和Flex之间共享,但com.application.MyService
的实现将根据所使用的“服务源路径”而有所不同。-define+=CONFIG::AIR
这样的编译器标志配置每个构建非常有用。这允许您使用条件编译,以便可以为两个版本编译相同的文件,但包括用于AIR版本的特定代码。以下是条件编译的一个示例:
不幸的是,没有办法‘否定’一个有条件的标志(即。
!CONFIG::AIR
),因此您需要明智地使用它,或者包括两个标志(CONFIG::AIR
和CONFIG::FLEX
)nukf8bse2#
我很惊讶还没有人这么说,但我会这么做:
1.创建库项目。该项目将包括您的所有共享代码。
1.创建用于Web部署的Flex项目
1.创建空中部署的AIR项目
Flex和AIR项目都可以引用和使用库项目中的代码。AIR项目可以使用特定于AIR的功能,而不会影响Web项目。
如果您需要根据是使用Web项目还是AIR项目来执行不同的操作,您可以在库项目中创建接口,并在主项目中实现它们,以使用各自的API。
ma8fv8wu3#
是的,你能做到的。在代码中必须控制某些条件。
请记住,如果应用程序也是Flex应用程序,那么它将是单一窗口应用程序。对于我做的每个需要这个的项目,我创建了3个项目
1.代码库(主控件为组或画布)
1.flex exporter=>当您构建此应用程序时,您将得到一个flex应用程序,它在主应用程序中具有一个来自#1的控件
1.Air Exporter=>当您构建此应用程序时,您将得到一个Air应用程序,它在主窗口中有一个来自#1的控件。