Archive for 12月, 2009

このページの目次

Loader.load()の第2引数のLoaderContext

水曜日, 12月 2nd, 2009

こんにちは、なかわけです。

今日は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