动态加载显示内容Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本 可以将下列任何外部显示资源加载到 ActionScript 3.0 应用程序中:
使用 Loader 类可以加载这些资源。 加载显示对象Loader 对象用于将 SWF 文件和图形文件加载到应用程序中。Loader 类是 DisplayObjectContainer 类的子类。Loader 对象在其显示列表中只能包含一个子显示对象,该显示对象表示它加载的 SWF 或图形文件。如下面的代码所示,在显示列表中添加 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 对象的不同用途 — 用于 SWF 文件的主类的实例、用于 Loader 对象以及用于由 Loader 对象加载的对象: 可以将 LoaderInfo 对象作为 Loader 对象和加载的显示对象的属性进行访问。加载一开始,就可以通过 Loader 对象的 contentLoaderInfo 属性访问 LoaderInfo 对象。加载完显示对象后,也可以通过显示对象的 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 或 AIR 中时,可以选择指定 context 参数。此参数是一个 LoaderContext 对象。 LoaderContext 类包括三个属性,用于定义如何使用加载的内容的上下文:
下面的示例在从另一个域加载位图时检查策略文件: 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 类。 |
|