·您当前的位置:主页 > 技术教程 > AS2与AS3技术 >

[AS3] LoaderExample类加载文件时的各种事件侦听附代码

时间:2017-06-19 17:41酷播
下例用 LoaderExample 类来说明如何使用各种事件侦听器。 执行下列步骤可完成该任务。[AS3] LoaderExample类加载文件时的各种事件侦听附代码

下例用 LoaderExample 类来说明如何使用各种事件侦听器。 执行下列步骤可完成该任务:

  1. 创建 url 属性,它是图像文件的位置和名称
  2. LoaderExample 构造函数中,创建一个新的 Loader 对象,名为 loader,该对象随后被传递给 configureListeners() 方法,如步骤 3 所述。
  3. 构造函数创建一个 URLRequest 对象的新实例 request,该实例带有传递的 url,这样,就可以知道文件的名称和位置。
  4. request 对象传递给 loader 对象的 load() 方法,该方法会将图像加载到显示列表上。
  5. 为加载器上的 click 事件注册 clickHandler 事件侦听器。 在单击鼠标后,便可卸载加载的图像。
  6. configureListeners() 方法通过以下方法添加 7 个事件侦听器:
    • 图像加载完成时,执行 completeHandler() 方法。
    • 图像不是在本地加载,并且只有在网络请求可用并可被 Flash Player 检测到的情况下,才会执行 httpStatusHandler() 方法。
    • initHandler() 方法在 completeHandler() 方法之前、progressHandler() 方法之后执行。 通常,init 事件在加载 SWF 文件时更有用。
    • 图像文件不可用或不可访问,则执行 ioErrorHandler() 方法。
    • 首次打开图像文件时,执行 openHandler() 方法。
    • 图像文件开始下载和下载完成时,执行 progressHandler() 方法。
    • 通过使用用户单击图像时使用的 unload() 方法卸载图像时,执行 unLoadHandler() 方法。

请牢记以下要求:

  • 该示例要求您将名为 Image.gif 的文件放置在与经过编译的 SWF 文件相同的目录中。 使用具有一个适合主 SWF 文件尺寸的区域的图像。
  • 虽然该示例使用可用于 LoaderInfo 对象的所有事件,但是在大部分情况下,只需要一个子集。 特别是在只加载图像文件时,complete 事件(还可能是 ioError 事件)足够用于加载本地图像。
  1. package { 
  2.     import flash.display.Loader; 
  3.     import flash.display.Sprite; 
  4.     import flash.events.*; 
  5.     import flash.net.URLRequest; 
  6.  
  7.     public class LoaderExample extends Sprite { 
  8.         private var url:String = "Image.gif"
  9.  
  10.         public function LoaderExample() { 
  11.             var loader:Loader = new Loader(); 
  12.             configureListeners(loader.contentLoaderInfo); 
  13.             loader.addEventListener(MouseEvent.CLICK, clickHandler); 
  14.  
  15.             var request:URLRequest = new URLRequest(url); 
  16.             loader.load(request); 
  17.  
  18.             addChild(loader); 
  19.         } 
  20.  
  21.         private function configureListeners(dispatcher:IEventDispatcher):void { 
  22.             dispatcher.addEventListener(Event.COMPLETE, completeHandler); 
  23.             dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); 
  24.             dispatcher.addEventListener(Event.INIT, initHandler); 
  25.             dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 
  26.             dispatcher.addEventListener(Event.OPEN, openHandler); 
  27.             dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
  28.             dispatcher.addEventListener(Event.UNLOAD, unLoadHandler); 
  29.         } 
  30.  
  31.         private function completeHandler(event:Event):void { 
  32.             trace("completeHandler: " + event); 
  33.         } 
  34.  
  35.         private function httpStatusHandler(event:HTTPStatusEvent):void { 
  36.             trace("httpStatusHandler: " + event); 
  37.         } 
  38.  
  39.         private function initHandler(event:Event):void { 
  40.             trace("initHandler: " + event); 
  41.         } 
  42.  
  43.         private function ioErrorHandler(event:IOErrorEvent):void { 
  44.             trace("ioErrorHandler: " + event); 
  45.         } 
  46.  
  47.         private function openHandler(event:Event):void { 
  48.             trace("openHandler: " + event); 
  49.         } 
  50.  
  51.         private function progressHandler(event:ProgressEvent):void { 
  52.             trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); 
  53.         } 
  54.  
  55.         private function unLoadHandler(event:Event):void { 
  56.             trace("unLoadHandler: " + event); 
  57.         } 
  58.  
  59.         private function clickHandler(event:MouseEvent):void { 
  60.             trace("clickHandler: " + event); 
  61.             var loader:Loader = Loader(event.target); 
  62.             loader.unload(); 
  63.         } 
  64.     } 

 

保利威视云直播提供稳定流畅,高画质,低延迟的直播服务

酷播云服务,酷播云