アプリケーションドメインの操作Flash Player 9 以降、Adobe AIR 1.0 以降 ApplicationDomain クラスの目的は、ActionScript 3.0 定義のテーブルを保存することです。 SWF ファイル内のすべてのコードは、アプリケーションドメイン内に存在するように定義されます。 アプリケーションドメインは、同じセキュリティドメイン内にある複数のクラスを分離するために使用します。 それにより、1 つのクラスについて複数の定義を用意することや、子が親の定義を再利用することが可能になります。 ActionScript 3.0 で作成された外部 SWF ファイルを Loader クラス API でロードするときは、アプリケーションドメインを使用できます。 ActionScript 1.0 または ActionScript 2.0 で作成された SWF ファイルのイメージをロードするときは、アプリケーションドメインを使用できないことに注意してください。 ロードされたクラスに含まれているすべての ActionScript 3.0 定義は、アプリケーションドメイン内に格納されます。 SWF ファイルをロードするとき、LoaderContext オブジェクトの applicationDomain パラメーターを ApplicationDomain.currentDomain に設定することにより、ファイルを Loader オブジェクトと同じアプリケーションドメインに含めるよう指定できます。ロードされた SWF ファイルを同じアプリケーションドメインに置くと、そのクラスに直接アクセスできます。 これは、関連するクラス名によってアクセスできるメディアが埋め込まれた SWF ファイルをロードする場合や、ロードされた SWF ファイルのメソッドにアクセスする場合に便利です。 次の例では、welcome() という名前のパブリックメソッドを定義している別の Greeter.swf というファイルにアクセスすることを想定しています。 package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.*;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
public class ApplicationDomainExample extends Sprite
{
private var ldr:Loader;
public function ApplicationDomainExample()
{
ldr = new Loader();
var req:URLRequest = new URLRequest("Greeter.swf");
var ldrContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
ldr.load(req, ldrContext);
}
private function completeHandler(event:Event):void
{
var myGreeter:Class = ApplicationDomain.currentDomain.getDefinition("Greeter") as Class;
var myGreeter:Greeter = Greeter(event.target.content);
var message:String = myGreeter.welcome("Tommy");
trace(message); // Hello, Tommy
}
}
}
『Adobe Flash Platform 用 ActionScript 3.0 リファレンスガイド』の ApplicationDomain クラスの例も参照してください。 それ以外に、アプリケーションドメインを操作するときに注意すべき点は、次のとおりです。
次の図に示すアプリケーションでは、様々な SWF ファイルから domain1.com という単一のドメイン内にコンテンツをロードしています。 ロードするコンテンツによっては、異なるアプリケーションドメインを使用することもできます。 このアプリケーションに含まれる個々の SWF ファイルでは、それぞれに適した異なる形態でアプリケーションドメインを使用しています。各形態の使い分け方について次に説明します。 メインアプリケーションファイルは application1.swf です。 これには、他の SWF ファイルからコンテンツをロードする Loader オブジェクトが入っています。 このシナリオでは、現在のドメインは Application domain 1 です。使用形態 A、使用形態 B、および使用形態 C は、アプリケーション内の各 SWF ファイルに適切なアプリケーションドメインを設定する様々な手法の例を示しています。
|
|