Skip to content

unic8 Studios

Dokumentationen Anleitungen FAQs Links Erweiterte Suche
EnglishGerman

Neueste Neuigkeiten

Beliebte Neuigkeiten

You are here: Home arrow Neuigkeiten arrow Labor arrow Erkennen der FlashPlayer capabilities mittels describeType()
Erkennen der FlashPlayer capabilities mittels describeType()
Monday, 21. January 2008

Ich arbeite an einer soliden Bug Reporting Funktionalität für G-Nero und stolperte über das AS3 Package flash.system.Capabilities und versuchte den "guten alten Weg" (AS2 alike) und bekam kein Ergebnis. Also nahm ich den neuen Stil und versuchte auf die Eigenschaften (screenDPI, hasAccessibility, ...) zuzugreifen mittels einer "for each" Schleife und... Ich scheiterte. Adobe selbst hat einen Artikel auf LiveDocs mit einem enthaltenen Beispiel welches ein Array mit die Eigenschaften enthält, welche abgefragt werden sollen. Da dies nicht wirklich flexibel ist und nicht sehr brauchbar für zukünftige Versionen des Flash Players ist habe ich mich entschieden es mit der neuen Methode zu versuchen: describeType()

Adobe's Beispiel

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;
}

Neuer Stil mit describeType()-Methode

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

Ich denke das ist ein gutes Beispiel wo die neue Methode bestens zum Einsatz kommt.

Trackback(0)
Kommentare (0)add comment

Kommentar schreiben
quote
bold
italicize
underline
strike
url
image
quote
quote
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley

security image
Bitte den folgenden Code eintragen


busy
 
< zurück   weiter >

Umfragen

Which data exchange technology do you prefer?