表示コンテンツの動的ロードFlash Player 9 以降、Adobe AIR 1.0 以降 次の外部表示アセットを ActionScript 3.0 アプリケーションにロードできます。
これらのアセットをロードするには、Loader クラスを使用します。 表示オブジェクトのロードLoader オブジェクトは、SWF ファイルおよびグラフィックファイルをアプリケーションにロードするために使用されます。 Loader クラスは、DisplayObjectContainer クラスのサブクラスです。 Loader オブジェクトは、その表示リストに子表示オブジェクト(ロードされる SWF またはグラフィックファイルを表す表示オブジェクト)を 1 つしか含むことができません。表示リストに Loader オブジェクトを追加するときは、次のコードのように、子表示オブジェクトのロードが完了したら、ロードされた子表示オブジェクトも表示リストに追加します。 var pictLdr:Loader = new Loader(); var pictURL:String = "banana.jpg" var pictURLReq:URLRequest = new URLRequest(pictURL); pictLdr.load(pictURLReq); this.addChild(pictLdr); SWF ファイルまたはイメージがロードされたら、ロードされた表示オブジェクトを、次の例に示す container DisplayObjectContainer オブジェクトのような別の表示オブジェクトコンテナに移動できます。 import flash.display.*; import flash.net.URLRequest; import flash.events.Event; var container:Sprite = new Sprite(); addChild(container); var pictLdr:Loader = new Loader(); var pictURL:String = "banana.jpg" var pictURLReq:URLRequest = new URLRequest(pictURL); pictLdr.load(pictURLReq); pictLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded); function imgLoaded(event:Event):void { container.addChild(pictLdr.content); } ロードの進行状況の監視ファイルがロードを開始すると、LoaderInfo オブジェクトが作成されます。 LoaderInfo オブジェクトは、ロードの進行状況、ロードする側およびロードされる側の URL、メディアの総バイト数、メディアの規格高さと幅などの情報を提供します。LoaderInfo オブジェクトは、ロードの進行状況を監視するためのイベントも送出します。 次の図は、LoaderInfo オブジェクトの各種使用方法を示します。LoaderInfo オブジェクトは、SWF ファイルのメインクラスのインスタンス、Loader オブジェクト、および Loader オブジェクトによってロードされたオブジェクトの場合でそれぞれ使用方法が異なります。 LoaderInfo オブジェクトは、Loader オブジェクトと、ロードされた表示オブジェクトの両方のプロパティとしてアクセスできます。 LoaderInfo オブジェクトは、ロードが開始されると同時に、Loader オブジェクトの contentLoaderInfo プロパティを介してアクセスできます。また、表示オブジェクトのロード完了後は、表示オブジェクトの loaderInfo プロパティを介してロードされた表示オブジェクトのプロパティとして LoaderInfo オブジェクトにアクセスすることができます。ロードされた表示オブジェクトの loaderInfo プロパティは、Loader オブジェクトの contentLoaderInfo プロパティと同じ LoaderInfo オブジェクトを参照します。つまり、LoaderInfo オブジェクトは、ロードされたオブジェクトファイルとロードした Loader オブジェクト間(ロードする側およびロードされる側の間)で共有されます。 ロードされたコンテンツのプロパティにアクセスするには、LoaderInfo オブジェクトにイベントリスナーを次のコードのように追加する必要があります。 import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; var ldr:Loader = new Loader(); var urlReq:URLRequest = new URLRequest("Circle.swf"); ldr.load(urlReq); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); addChild(ldr); function loaded(event:Event):void { var content:Sprite = event.target.content; content.scaleX = 2; } 詳しくは、イベント処理を参照してください。 ロードコンテキストの指定Loader クラスの load() または loadBytes() メソッドを介して Flash Player に外部ファイルをロードする場合、オプションで context パラメーターを指定できます。このパラメーターは LoaderContext オブジェクトです。 LoaderContext クラスには、ロードされたコンテンツの使用方法のコンテキストを定義できる次の 3 つのプロパティが含まれています。
次に示す例では、別のドメインからビットマップをロードするとき、ポリシーファイルをチェックします。 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 ファイルのクラスを 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); 詳しくは、『Adobe Flash Platform 用 ActionScript 3.0 リファレンスガイド』の LoaderContext クラスの項を参照してください。 |
![]() |