為了協助預先載入執行階段共享元件庫 (RSL),Flash Professional CS5.5 會導入 fl.display.ProLoader 和 fl.display.ProLoaderInfo 類別。這些類別會鏡像 flash.display.Loader 和 flash.display.LoaderInfo 類別,但可提供更一致性的載入經驗。
此外,ProLoader 還可協助您使用 RSL 預先載入的 Text Layout Framework (TLF),載入 SWF 檔。在執行階段中,預先載入其他 SWF 檔或 SWZ 檔的 SWF 檔 (例如 TLF),需要僅供內部使用的 SWF 包裝檔。由 SWF 包裝檔附加之額外圖層的複雜度,會導致不必要的行為。由於檔案均為一般的 SWF 檔,ProLoader 可解決載入這些檔案的複雜度。ProLoader 類別使用的解決方案對使用者而言一目瞭然,且無需特別在 ActionScript 中處理。此外,ProLoader 會載入正確的一般 SWF 內容。
在 Flash Professional CS 5.5 和更新的版本中,您可以更安全地以 ProLoader 類別,取代 Loader 類別的所有用法。接著,將您的應用程式匯出至 Flash Player 10.2 或更新的版本,讓 ProLoader 可存取所需的 ActionScript functionality。若您使用較舊版的 Flash Player (支援 ActionScript 3.0),也可以使用 ProLoader。不過,使用 Flash Player 10.2 或更新的版本可讓您充分利用 ProLoader 的功能。當您在 Flash Professional CS5.5 或更新的版本中使用 TLF 時,永遠使用 ProLoader。除了 Flash Professional 以外,其他環境均無需使用 ProLoader。
重要事項:
對於在 Flash Professional CS5.5 和更新的版本中發佈的 SWF 檔案,您可以一律使用 fl.display.ProLoader 和 fl.display.ProLoaderInfo 類別,不要使用 flash.display.Loader 和 flash.display.LoaderInfo。
ProLoader 類別提到的問題
ProLoader 類別提到的問題,包括無法處理 legacy Loader 類別。這些問題起因於 TLF 元件庫預先載入 RSL。特別是,套用至使用 Loader 物件來載入其他 SWF 檔案的 SWF 檔案。提到的問題如下:
-
要載入的檔案和已載入的檔案間之指令碼並非預期。
ProLoader 類別會自動將要載入的 SWF 檔設定為已載入的 SWF 檔的父系。因此,要載入的 SWF 檔之通訊,會直接進入已載入的 SWF 檔。
-
SWF 應用程式必須主動管理載入程序。
如此一來,則需要實作額外事件,例如
added
、
removed
、
addedToStage
以及
removedFromStage
。如果您的應用程式使用 Flash Player 10.2 或更新的版本,ProLoader 則無需進行此額外作業。
更新程式碼以使用 ProLoader 而非 Loader
因為 ProLoader 會鏡像 Loader 類別,所以,您可以輕鬆地在程式碼中切換這兩個類別。以下範例說明如何更新現有程式碼,以使用新類別:
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!');
}