代码之家  ›  专栏  ›  技术社区  ›  sergiogx

在flex中,是否可以识别代码是在web上运行还是在air上运行?

  •  0
  • sergiogx  · 技术社区  · 16 年前

    我正在编写一个既在网络上运行又在空中运行的应用程序,为了避免复制arround代码,我想我应该在FlexBuilder上执行3种项目:库、网络和空中项目。

    所以我所有的代码都在图书馆项目中。

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

    有人知道怎么做吗?

    5 回复  |  直到 15 年前
        1
  •  4
  •   Community Mohan Dere    9 年前
        2
  •  3
  •   geowa4    16 年前

    你真的应该有两个构建目标,一个用于网络,一个用于空中。并且您的代码的设计方式应该是,系统的其他部分不关心实现部分在做什么,只关心它符合某个接口。这样,每个构建都会简单地替换每个所需平台的实现代码。

        3
  •  1
  •   M. Ryan    16 年前

    您可能会在文档的系统或功能下发现一些有用的东西。

        4
  •  1
  •   tefozi    16 年前

    创建两个项目air和standalone,并创建两个条件编译变量,例如“standalone”和“air”。(更多) here )

    转到项目->属性->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");
    }
    
        5
  •  0
  •   sergiogx    16 年前

    嗯…我刚找到一条路

    var appName:String = Application.application.name;
    

    这是因为Web版本被称为“”,而桌面版本被称为“桌面”。

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

    谢谢。

    推荐文章