Flash Player 9 Update 3, Version 9.0.115.0
Outre les ajouts connu tels que le support des codecs H.264/HE-AAC, de la gestion du multicore dans les tâches de rendu (vectoriel, travail par pixel …) de flash player et la régression sur certaines choses comme l’evenement Event.SOUND_COMPLETE ou des bug toujours pas corrigés.
Certains ajout sont apparus sans qu’on en parle trop, dont une que je viens de découvrir : LoaderInfo::getLoaderInfoByDefinition()
.
Cette méthode statique permet récuperer le LoaderInfo
de n’importe quel Object
associé à un SWF. En fait c’est n’importe quel objet(Object
), classe (Class
), méthode de la racine (top level) … tout sauf de type Number
, int
et uint
, null
, undefined
, String
et Boolean
(j’en oublie peut être d’autres).
L’un des avantages que j’ai tout de suite vu, que je cherchais à faire depuis un bout de temps : récuperer l’url du flash chargé (LoaderInfo.loaderURL
ou LoaderInfo.url
) dans lequel mon code s’execute, sans avoir un accès direct au Stage, par exemple pour une classe qui n’est pas un DisplayObject
.
var target:Object = new Object();// new Sprite()|Number|int|Class|this|new Array()|[]|... var loaderInfo:LoaderInfo = LoaderInfo.getLoaderInfoByDefinition(target); // loaderInfo === <root>.loaderInfo trace(loaderInfo.loaderURL);
Attention l’accès ne peut ce faire qu’après l’evenement Event.COMPLETE
du root du SWF sinon le code d’erreur d’execution 2099 est retourné pour la majorité des propriété du LoaderInfo
package { import flash.display.Sprite; import flash.display.LoaderInfo; import flash.events.Event; public class GetLoaderInfoByDefinitionDemo extends Sprite { public function GetLoaderInfoByDefinitionDemo():void { this.loaderInfo.addEventListener(Event.COMPLETE, this.traceLoaderInfoProperties, false, 0, false); } private function traceLoaderInfoProperties(event:Event):void { var loaderInfo = LoaderInfo.getLoaderInfoByDefinition([]); trace("actionScriptVersion: " + loaderInfo.actionScriptVersion); trace("applicationDomain: " + loaderInfo.applicationDomain); trace("bytes: " + loaderInfo.bytes); trace("bytesLoaded: " + loaderInfo.bytesLoaded); trace("bytesTotal: " + loaderInfo.bytesTotal); trace("childAllowsParent: " + loaderInfo.childAllowsParent); trace("content: " + loaderInfo.content); trace("contentType: " + loaderInfo.contentType); trace("frameRate: " + loaderInfo.frameRate); trace("height: " + loaderInfo.height); trace("loader: " + loaderInfo.loader); trace("loaderURL: " + loaderInfo.loaderURL); trace("parameters: " + loaderInfo.parameters); trace("parentAllowsChild: " + loaderInfo.parentAllowsChild); trace("sameDomain: " + loaderInfo.sameDomain); trace("sharedEvents: " + loaderInfo.sharedEvents); trace("swfVersion: " + loaderInfo.swfVersion); trace("url: " + loaderInfo.url); trace("width: " + loaderInfo.width); } } }