从actionscript库中检测AIR与Flash Player

时间:2009-01-20 16:05:06

标签: flex flash actionscript-3 air

我有一个需要稍微不同操作的swc,具体取决于它是否由AIR托管。我在互联网上看到了两条建议:

  • 测试WindowedApplication的Application.application。
  • 为Security.APPLICATION测试Security.sandboxType。

但是,这些似乎不适用于我的.swc,因为编译器找不到WindowedApplication或Security.APPLICATION。我的库不需要任何其他AIR功能,所以我认为它没有链接到AIR库,我认为不应该继续在flash播放器中工作。

有什么建议吗?

2 个答案:

答案 0 :(得分:21)

您可以使用flash.system.Capabilities对象查明您是否在AIR下运行。

var isAir : Boolean = (Capabilities.playerType == "Desktop");
var isFlashPlayer : Boolean = (Capabilities.playerType == "StandAlone");
var isBrowser : Boolean = (Capabilities.playerType == "ActiveX" || Capabilities.playerType == "PlugIn");
var isOther : Boolean = (Capabilities.playerType == "External");

答案 1 :(得分:1)

我会尝试使用flash.utils.getDefinitionByName(),它允许您将一个AIR API类作为String传递。这应该抛出一个错误,您可以在Flex环境中捕获该错误,或​​者在AIR环境中成功。