まだ生きてたクロスドメインの穴

外部ドメインの画像のビットマップ処理なんかで必要になるcrossdomain.xmlですが、Loader.loadBytesを使うと無視できる穴はまだ塞がっていない様子。
以下が50行弱の簡単なコードです。
※2011.8.26現在。

package
{
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;

	public class Main extends MovieClip
	{

		private const PATH:String=外部画像のアドレス;

		private var loader_1:Loader;
		private var loader_2:Loader;

		public function Main()
		{

			loader_1 = new Loader();
			loader_1.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComp);
			loader_1.load( new URLRequest( PATH ) );
		}

		private function loadComp(e:Event):void
		{
			loader_2 = new Loader();
			loader_2.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComp_2);
			loader_2.loadBytes(loader_1.contentLoaderInfo.bytes);
		}

		private function loadComp_2(e:Event):void
		{
			var bmpData:BitmapData = new BitmapData( loader_2.width, loader_2.height, true );
			bmpData.draw( loader_2 );	//ここでエラーになるはず

			var bmp:Bitmap = new Bitmap( bmpData );
			bmp.smoothing=true;
			bmp.rotation=5;

			addChild( bmp );
		}

	}

}

いつも通りLoaderに画像を読ませた後、別のLoaderで先ほどのLoaderのバイトデータを読み込むとクロスドメインの設定が無視されます。
wonderflにも載ってますね。>外部画像をビットマップ化する
2010年に実案件で1回だけ使いましたが、まだ閉じられていないようですね。

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>