条件头包含在AS3中

时间:2013-08-10 16:00:22

标签: iphone actionscript-3 air

我有一个Flash CC / AS3文档,我打算在iOS和Android平台上部署。

接下来我需要做的是将应用程序与Facebook集成。我认为最合乎逻辑的方法是拥有一个处理所有Facebook交互内容的类,并调用适当的方法,无论我们是为Air for Android还是Air for iOS编译的。我不认为这样做太难了。

当我开始玩Persistant Login时出现了问题。要在iOS上完成此操作,我需要将.ane文件包含到我的.fla中。很好,所以在这一点上我复制了.fla并且有1个用于Android,1个用于iOS(这是一直以来的计划)。

所以在iOS应用程序中我接下来必须import com.sbhave.openUrl.*;引用.ane文件。我希望我能做一些像

这样的事情
try{
   import com.sbhave.openUrl.*;
}
catch(e){
   //Set some constant to let us know that we are on android
}

替代方案(我认为)将是对iOS进行所有更改,做一个差异并创建一个补丁,以便在构建时快速交换进出iOS原生扩展。是否有任何人建议如何捕获失败的导入,或根据.ane文件是否存在而有条件地导入。

由于

PS ..

哦,是的,我忘了提到这个如此重要的原因是因为iOS的Air无法在包含扩展功能的PC上运行,而且每次需要时都需要编译和安装很多工作测试

PPS ..

此问题并非特定于Facebook持久登录,因为其他本地扩展将需要各种位。问题的焦点是AS3代码是否可以有条件地包含头文件或进程不同包含基于.FLA中设置的参数

1 个答案:

答案 0 :(得分:0)

对于其他遇到类似问题的人,我通过以下方式解决了这个问题: 我创建了一个编译时常量CONFIG :: iOS,我在iOS应用程序中设置为true,在Android中设置为False。

任何依赖于包含3rdparty .ane或.swc文件的代码都包含在像

这样的块中
CONFIG::iOS
{
  //iOS Specific
}

感谢http://divillysausages.com/blog/as3_conditional_compilation