Iterating Flash Player Capabilities Properties
April 11, 2009
0
There are times when you might want to iterate through and display the capabilities of the Flash Player. This snippet will do that:
import flash.display.Sprite; import flash.system.Capabilities; import flash.utils.describeType; public function getSystemInfo():void { var capability:XML=describeType(Capabilities); //trace(capability); var capabilities:XMLList=capability.children(); for each (var xmlData:XML in capabilities) { if (xmlData.@name && Capabilities[xmlData.@name]) trace(xmlData.@name+"="+Capabilities[xmlData.@name]); } }
The output is something like this:
hasPrinting=true hasScreenPlayback=true screenDPI=72 _internal=1 os=Windows Vista hasAccessibility=true hasMP3=true version=WIN 9,0,159,0 screenResolutionY=1050 hasEmbeddedVideo=true manufacturer=Adobe Windows hasVideoEncoder=true pixelAspectRatio=1 hasAudio=true screenResolutionX=1680 hasTLS=true isDebugger=true screenColor=color hasStreamingVideo=true serverString=A=t&SA=t&SV=t&EV=t&MP3=t&AE=t&VE=t&ACC=... language=en hasAudioEncoder=true playerType=PlugIn hasStreamingAudio=true prototype=[object Object]
About the Code
We cannot use for each … in iterator because the properties are static. So we use flash.utils.describeType() function which returns an XML object containing the properties of the object. You can see the XML output here: Capabilities.xml
We then iterate through every children nodes, we check to print only the nodes that contains a name attribute. You can modify the function to return the capabilities on an Array if desired.