Grokys
Grokys

Reputation: 16526

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:

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?

Upvotes: 7

Views: 2701

Answers (2)

Richard Szalay
Richard Szalay

Reputation: 84734

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");

Upvotes: 21

cliff.meyers
cliff.meyers

Reputation: 17734

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.

Upvotes: 1

Related Questions