Adobe Flex 3 ヘルプ

ロードコンテキストの指定

Loader クラスの load() メソッドまたは loadBytes() メソッドを使用して Flash Player または AIR に外部ファイルをロードする場合、オプションで context パラメータを指定できます。このパラメータは LoaderContext オブジェクトです。

LoaderContext クラスには、ロードされたコンテンツの使用方法のコンテキストを定義できる次の 3 つのプロパティが含まれています。

  • checkPolicyFile - SWF ファイルではなく、イメージファイルをロードする場合にのみ、このプロパティを使用します。このプロパティを true に設定すると、Loader によってオリジンサーバーでクロスドメインポリシーファイルの有無がチェックされます(Web サイトの管理(クロスドメインポリシーファイル)参照)。これは、Loader オブジェクトを含む SWF ファイルのドメイン以外のドメインにあるコンテンツにのみ必要です。サーバーから Loader ドメインにアクセス許可が与えられている場合、Loader ドメイン内の SWF ファイルの ActionScript はロードされたイメージ内のデータにアクセスできます。つまり、BitmapData.draw() コマンドを使用して、ロードされたイメージ内のデータにアクセスできます。

    Loader オブジェクトのドメイン以外のドメインにある SWF ファイルは、Security.allowDomain() を呼び出して特定のドメインを許可できます。

  • securityDomain - このプロパティは、イメージではなく SWF ファイルをロードする場合にのみ使用します。Loader オブジェクトを含むファイルのドメイン以外のドメインの SWF ファイルに対してこのプロパティを指定します。このオプションを指定すると、Flash Player はクロスドメインポリシーファイルが存在するかどうかをチェックします。ファイルが存在する場合は、クロスドメインポリシーファイルで許可されているドメインの SWF ファイルはロードされた SWF コンテンツをクロススクリプトできます。このパラメータとして flash.system.SecurityDomain.currentDomain を指定できます。
  • applicationDomain - ActionScript 1.0 または 2.0 で記述されたイメージまたは SWF ファイルではなく、ActionScript 3.0 で記述された SWF ファイルをロードする場合にのみ、このプロパティを使用します。ファイルをロードするとき、applicationDomain パラメータを flash.system.ApplicationDomain.currentDomain に設定することで、ファイルが Loader オブジェクトと同じアプリケーションドメインに含まれるように指定できます。ロードされた SWF ファイルを同じアプリケーションドメインに置くと、そのクラスに直接アクセスできます。これは、関連付けられたクラス名を使用してアクセスできる埋め込みメディアを含む SWF ファイルをロードする場合に便利です。詳細については、ApplicationDomain クラスの使用を参照してください。

次に、別のドメインからビットマップをロードするときに、クロスドメインポリシーファイルの有無をチェックする例を示します。

var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;
var urlReq:URLRequest = new URLRequest("http://www.[your_domain_here].com/photo11.jpg");
var ldr:Loader = new Loader();
ldr.load(urlReq, context);

次に、SWF ファイルを Loader オブジェクトと同じセキュリティサンドボックスに置くために、別のドメインから SWF ファイルをロードするときに、クロスドメインポリシーファイルの有無をチェックする例を示します。また、このコードは、ロードされた SWF ファイルのクラスを Loader オブジェクトと同じアプリケーションドメインに追加します。

var context:LoaderContext = new LoaderContext();
context.securityDomain = SecurityDomain.currentDomain;
context.applicationDomain = ApplicationDomain.currentDomain;
var urlReq:URLRequest = new URLRequest("http://www.[your_domain_here].com/library.swf");
var ldr:Loader = new Loader();
ldr.load(urlReq, context);

詳細については、『ActionScript 3.0 コンポーネントリファレンスガイド』の LoaderContext クラスの説明を参照してください。

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート