为了帮助预加载运行时共享库 (RSL),Flash Professional CS5.5 引入了 fl.display.ProLoader 和 fl.display.ProLoaderInfo 类。这些类会镜像 flash.display.Loader 和 flash.display.LoaderInfo 类,但提供了更加一致的加载体验。
特别是,ProLoader 可帮助您加载使用 Text Layout Framework (TLF) 执行 RSL 预加载的 SWF 文件。在运行时,预加载其他 SWF 文件或 SWZ 文件(例如 TLF)的 SWF 文件需要仅供内部使用的 SWF 包装文件。SWF 包装文件会增加调用结构的复杂性,并可能产生不必要的行为。ProLoader 可以消除这种复杂关系,它可以像加载普通 SWF 文件那样加载这些文件。ProLoader 类使用的解决方法对于用户来说是透明的,不需要在 ActionScript 中执行任何特殊处理。此外,ProLoader 还可以正确加载普通 SWF 内容。
在 Flash Professional CS 5.5 和更高版本中,您可以安全地将所有 Loader 类替换为 ProLoader 类。然后,将您的应用程序导出到 Flash Player 10.2 或更高版本,以便 ProLoader 能够访问所需的 ActionScript 功能。您也可以在面向支持 ActionScript 3.0 的 Flash Player 早期版本的应用程序中使用 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 类解决了此前 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!');
}