An MXML Image Component That Loads Images With No Associated Policy Files

In a major UcompOS project I am working on, I am finding the need more and more to load images from various different servers where the destination servers often have no crossdomain.xml policy file.

I don’t want to use a back-end proxy to deal with this as that would be chewing up my back-end resources and bandwidth which goes against my grain especially when targeting a product for wide deployment.

I will post the code of the component below which should be very self-explanatory:

<?xml version="1.0" encoding="utf-8"?>
<mx:Image xmlns:fx="" 
			private var _legal:Boolean = true; 
			private var _url:String;
			public function get legal():Boolean
				return _legal;
			private function securityErrorHandler(event:SecurityErrorEvent):void
				_legal = false;
				var sprite:Sprite = new Sprite();
				var loader:Loader = new Loader();
				var loaderContext:LoaderContext = new LoaderContext();
				loaderContext.checkPolicyFile = false;
				loader.load(new URLRequest(url),loaderContext);
			private function load_handler(event:Event):void
				var loaderInfo:LoaderInfo = as LoaderInfo;
				var bitmapData:BitmapData = new BitmapData(loaderInfo.width,loaderInfo.height);
				var matrix:Matrix = new Matrix();
				var bitmap:Bitmap = new Bitmap(bitmapData);
				source = bitmap;
			public function get url():String
				return _url;
			public function set url(value:String):void
				loaderContext = new LoaderContext(false);
				_url = value;
				source = value;

Some things to point out about the component in no particular order:

  • You set a value of a URL to the image to the url property instead of the source property
  • A Boolean named legal has a false value if the content of the image was loaded using an assisting Sprite and Loader instance
  • The source property on an Image control is of a wildcard (*) type – if the value of legal is true, then source is a String and will have the same value as url. If the value of legal is false, then source will be an Object of type Bitmap