2009-01-20 47 views
7

我有一個需要稍微不同的swc,具體取決於它是否由AIR託管。我在網上看到了兩個建議:從動作庫中檢測AIR與Flash Player

  • 測試Application.application for WindowedApplication。
  • 爲Security.APPLICATION測試Security.sandboxType。

但是,由於編譯器無法找到WindowedApplication或Security.APPLICATION,因此這些似乎無法在我的.swc中工作。我的庫不需要任何其他AIR功能,因此我認爲它沒有鏈接到AIR庫,我認爲不應該爲了繼續在Flash Player中工作。

有什麼建議嗎?

回答

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

我會嘗試flash.utils.getDefinitionByName(),它將允許您將其中一個AIR API類作爲字符串傳遞。這應該會引發一個錯誤,您可以在Flex環境中捕獲錯誤或在AIR環境中成功執行錯誤。