Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detect AIR versus Flash Player from an actionscript library

I have an swc which needs to operate slightly differently depending on whether it is being hosted by AIR or not. I've seen two suggestions on the internet:

  • Test Application.application for WindowedApplication.
  • Test Security.sandboxType for Security.APPLICATION.

However, these don't seem to work in my .swc as the compiler can't find WindowedApplication or Security.APPLICATION. My library doesn't need any other AIR features so I assume it's not being linked to the AIR libraries, and I assume shouldn't be in order that it continues to work in flash player.

Any suggestions?

like image 499
Grokys Avatar asked Jan 20 '09 16:01

Grokys


2 Answers

You can use the flash.system.Capabilities object to find out if you running under 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");
like image 82
Richard Szalay Avatar answered Nov 04 '22 00:11

Richard Szalay


I would try flash.utils.getDefinitionByName() which will allow you to pass one of the AIR API classes as a String. This should throw an error which you can catch in a Flex environment or be successful in an AIR environment.

like image 1
cliff.meyers Avatar answered Nov 03 '22 23:11

cliff.meyers