Labs

I'm working on a solid bug reporting functionality for G-Nero and stumbled over the AS3 package flash.system.Capabilities and tried the "good old way" (AS2 alike) and got no result at all. So I did the new style attempting to access the properties (screenDPI, hasAccessibility, ...) via a "for each" loop and... I failed. Adobe itself got an article on LiveDocs containing an example which uses an array of the properties you would like to query. Because this is not really flexible and not very usable for future versions of Flash Players I decided to try it with the new method: describeType()

Adobe's example

public static function getCapabilities():Array
{
  var capDP:Array = new Array();
  capDP.push({name:"Capabilities.avHardwareDisable", value:Capabilities.avHardwareDisable});
  capDP.push({name:"Capabilities.hasAccessibility", value:Capabilities.hasAccessibility});
  capDP.push({name:"Capabilities.hasAudio", value:Capabilities.hasAudio});
  ...
  capDP.push({name:"Capabilities.version", value:Capabilities.version});
  var navArr:Array = CapabilitiesGrabber.getBrowserObjects();
  if (navArr.length > 0)
  {
      capDP = capDP.concat(navArr);
  }
  capDP.sortOn("name", Array.CASEINSENSITIVE);
  return capDP;
}

New style with describeType()-method

var flashPlayerData:Array = new Array();
var objectType:XML = describeType(flash.system.Capabilities);
var excludedProperties:Array = ["_internal", "serverString", "prototype"];

for each(var objectProperties:XML in objectType.accessor){
  var propertyName:String = objectProperties.@name;
  var isExcluded:Boolean = false;

  for(var c:uint = 0; c < excludedProperties.length; c++){
    var excludedName:String = excludedProperties[c];
      if(propertyName == excludedName){
        isExcluded = true;
          break;
      }
  }

  if(!isExcluded){
    var propertyValue:String = flash.system.Capabilities[propertyName];
    flashPlayerData.push({name: propertyName, value: propertyValue});
  }
}

flashPlayerData.sortOn("name", Array.CASEINSENSITIVE);

I think this is a good sample where the new method come to it's best.

Trackback(0)
Comments (0)add comment

Write comment

busy