こんにちは、なかわけです。
今日はLoader.load()の第2引数、LoaderContextにハメられた話。
wonderflをしていて、flickrにある画像をLoader.load()で読み込んでいたのですが、
addChild(loader)はできるのに、Bitmap(loader.content)ができず、行き詰っていました。
原因は、Loader.load()の第2引数を与えなかったことにありました。
詳しい説明はFlashのマニュアルに書いてありますが、
簡単に話すと他サーバから読み込まれた画像をスクリプトで操作するには、
LoaderContextのcheckPolicyFileプロパティをtrueにする必要があるようです。
もっと簡単に言うと、クロスドメインの問題です。
このcheckPolicyFileプロパティはクロスドメインのポリシーファイルをロードするか否かの設定で
デフォルトがfalseです。
このプロパティをtrueにしないままだと、Loader.contentやBitmapData.draw()などの処理は
SecurityErrorで実行されません。
以下のように書けば問題なく行けました。
var context:LoaderContext = new LoaderContext(true); var loader:Loader = new Loader(); loader.load(new URLRequest(IMAGE_URL), context);
ちなみにwonderflで作っていたのはこれです。
http://wonderfl.net/code/b1fd0c021cb26e6593f80f7b3831e611504b2fd2