Apache flex 在Flex中,是否能够识别代码是在Web上运行还是在空中运行?

Apache flex 在Flex中,是否能够识别代码是在Web上运行还是在空中运行?,apache-flex,flash,web-services,sqlite,air,Apache Flex,Flash,Web Services,Sqlite,Air,我正在编写一个既在网络上运行又在空中运行的应用程序,为了避免到处复制代码,我想我应该在flex builder上执行3种项目:Library、web和AIR项目 所以我所有的代码都在库项目中 我有accessData.as,它扩展了EventDispatcher以获取web服务并将其作为事件返回。我计划使用这个类来获取桌面版本的SQLite数据,但要做到这一点,我需要它决定从哪个来源获取数据,这取决于它的Web或AIR 有人知道怎么做吗?嗯。。。我刚找到一个办法 var appName:Stri

我正在编写一个既在网络上运行又在空中运行的应用程序,为了避免到处复制代码,我想我应该在flex builder上执行3种项目:Library、web和AIR项目

所以我所有的代码都在库项目中

我有accessData.as,它扩展了EventDispatcher以获取web服务并将其作为事件返回。我计划使用这个类来获取桌面版本的SQLite数据,但要做到这一点,我需要它决定从哪个来源获取数据,这取决于它的Web或AIR


有人知道怎么做吗?

嗯。。。我刚找到一个办法

var appName:String = Application.application.name;
这是因为web版本称为“”,桌面版本称为“桌面”

但是如果有人有更好的方法,请继续


谢谢。

您可以在文档中的系统或功能下找到有用的内容。

您确实应该有两个构建目标,一个用于Web,一个用于AIR。您的代码应该设计成系统的其他部分不关心实现部分在做什么,只关心它符合某个接口。通过这种方式,每个构建只需替换每个所需平台的实现代码。

请参阅此链接及其更详细的内容。

创建2个项目Air和STANDABLE,并创建2个条件编译变量,例如“STANDABLE”和“Air”。(更多)

转到项目->属性->Flex编译器并添加

航空项目:

-define=CONFIG::standalone,false -define=CONFIG::air,true
仅对斯坦来说:

-define=CONFIG::debugging,true -define=CONFIG::air,false
在代码集中:

CONFIG::standalone { 
    trace("this code will be compiled only when air=false and standalone=true");
}


CONFIG::air { 
    trace("this code will be compiled only when air=true and standalone=false");
}

嗯,这和我做的有什么不同?你能举个例子吗?我刚刚完成了架构,我刚好及时做了更改,谢谢:)。您正在试图弄清楚您在…嗯…运行时运行的是什么。我是说你们制作了两种不同的发行版,一种是空气发行版,另一种是网络发行版。所以,当您为Web构建swf时,不包括AIR的代码。