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

Leave a Reply

Your email address will not be published. Required fields are marked *