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

By | 2011年8月26日

外部ドメインの画像のビットマップ処理なんかで必要になる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回だけ使いましたが、まだ閉じられていないようですね。

One thought on “まだ生きてたクロスドメインの穴

  1. Pingback: as3 クロスドメインとかされてる時、読み込んだ画像にsmoothingしたい at KOIKE TIIIIIPS

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です