リモート共有ライブラリ(RSL)のプリロードのために、Flash Professional CS5.5 では、fl.display.ProLoader および fl.display.ProLoaderInfo クラスが導入されています。これらのクラスは、flash.display.Loader クラスおよび flash.display.LoaderInfo クラスをミラーしますが、さらに一貫したロード操作を実現します。
特に ProLoader では、RSL プリロードを伴う、Text Layout Framework(TLF)を使用する SWF ファイルのロードを簡単に実行できます。実行時、TLF などの、他の SWF ファイルまたは SWZ ファイルをプリロードする SWF ファイルには、内部利用のみの SWF ラッパーファイルが必要になります。SWF ラッパーファイルによって複雑さのレイヤーが追加され、予期しない動作が発生することがあります。ProLoader は、このような複雑さを解決し、通常の SWF ファイルであるかのようにこれらのファイルをロードします。ProLoader クラスによって使用されるソリューションはユーザーに対しては透過的であり、ActionScript での特別な処理は必要ありません。さらに、ProLoader は通常の SWF コンテンツを正確にロードします。
Flash Professional CS5.5 以降では、Loader クラスのすべての使用箇所を ProLoader クラスに安全に置き換えることができます。その後、必要な ActionScript 機能に ProLoader がアクセスできるよう、アプリケーションを Flash Player 10.2 以降に書き出します。ActionScript 3.0 をサポートする、以前の Flash Player のバージョンを対象とする場合も、ProLoader を使用することができます。ただし、ProLoader 機能を最大限に活用できるのは Flash Player 10.2 以降のみです。Flash Professional CS5.5 以降で TLF を使用する場合は常に ProLoader を使用してください。Flash Professional 以外の環境では、ProLoader は必要ありません。
重要:
Flash Professional CS5.5 以降でパブリッシュされた SWF ファイルについては、flash.display.Loader および flash.display.LoaderInfo の代わりに、常に fl.display.ProLoader および fl.display.ProLoaderInfo クラスを使用できます。
ProLoader クラスによって解決される問題
ProLoader クラスでは、従来の Loader クラスでは処理するよう想定されていなかった問題が解決されます。これらの問題は、TLF ライブラリの RSL プリロードによるものです。特に、Loader オブジェクトを使用して他の SWF ファイルをロードする SWF ファイルに適用されます。解決される問題には次のものがあります。
-
ロードする側のファイルとロードされる側のファイルの間のスクリプティングが期待通りに動作しません。
ProLoader クラスは、ロードする側の SWF ファイルをロードされる側の SWF ファイルの親として自動的に設定します。このため、ロードする側の SWF ファイルからの情報が、ロードされる側の SWF ファイルに直接伝達されます。
-
SWF アプリケーションで、積極的にロード処理を管理する必要があります。
これを行うためには、
added
、
removed
、
addedToStage
、
removedFromStage
などの追加イベントの実装が必要です。アプリケーションが Flash Player 10.2 以降を対象とする場合は、ProLoader を使用すればこのような追加の作業をする必要がなくなります。
Loader の代わりに ProLoader を使用するためのコードの更新
ProLoader は Loader クラスをミラーするので、コード内で 2 つのクラスを簡単に入れ替えることができます。以下の例は、新しいクラスを使用するために既存のコードを更新する方法を示します。
import flash.display.Loader;
import flash.events.Event;
var l:Loader = new Loader();
addChild(l);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
l.load("my.swf");
function loadComplete(e:Event) {
trace('load complete!');
}
このコードは、次のように ProLoader を使用するように更新することができます。
import fl.display.ProLoader;
import flash.events.Event;
var l:ProLoader = new ProLoader();
addChild(l);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
l.load("my.swf");
function loadComplete(e:Event) {
trace('load complete!');
}