[AS3] LoaderExample类加载文件时的各种事件侦听附代码
下例用 LoaderExample 类来说明如何使用各种事件侦听器。 执行下列步骤可完成该任务。[AS3] LoaderExample类加载文件时的各种事件侦听附代码
下例用 LoaderExample 类来说明如何使用各种事件侦听器。 执行下列步骤可完成该任务:
- 创建
url
属性,它是图像文件的位置和名称 - 在
LoaderExample
构造函数中,创建一个新的 Loader 对象,名为loader
,该对象随后被传递给configureListeners()
方法,如步骤 3 所述。 - 构造函数创建一个 URLRequest 对象的新实例
request
,该实例带有传递的url
,这样,就可以知道文件的名称和位置。 request
对象传递给loader
对象的load()
方法,该方法会将图像加载到显示列表上。- 为加载器上的
click
事件注册clickHandler
事件侦听器。 在单击鼠标后,便可卸载加载的图像。 configureListeners()
方法通过以下方法添加 7 个事件侦听器:- 图像加载完成时,执行
completeHandler()
方法。 - 图像不是在本地加载,并且只有在网络请求可用并可被 Flash Player 检测到的情况下,才会执行
httpStatusHandler()
方法。 initHandler()
方法在completeHandler()
方法之前、progressHandler()
方法之后执行。 通常,init
事件在加载 SWF 文件时更有用。- 图像文件不可用或不可访问,则执行
ioErrorHandler()
方法。 - 首次打开图像文件时,执行
openHandler()
方法。 - 图像文件开始下载和下载完成时,执行
progressHandler()
方法。 - 通过使用用户单击图像时使用的
unload()
方法卸载图像时,执行unLoadHandler()
方法。
- 图像加载完成时,执行
请牢记以下要求:
- 该示例要求您将名为 Image.gif 的文件放置在与经过编译的 SWF 文件相同的目录中。 使用具有一个适合主 SWF 文件尺寸的区域的图像。
- 虽然该示例使用可用于 LoaderInfo 对象的所有事件,但是在大部分情况下,只需要一个子集。 特别是在只加载图像文件时,
complete
事件(还可能是ioError
事件)足够用于加载本地图像。
- package {
- import flash.display.Loader;
- import flash.display.Sprite;
- import flash.events.*;
- import flash.net.URLRequest;
- public class LoaderExample extends Sprite {
- private var url:String = "Image.gif";
- public function LoaderExample() {
- var loader:Loader = new Loader();
- configureListeners(loader.contentLoaderInfo);
- loader.addEventListener(MouseEvent.CLICK, clickHandler);
- var request:URLRequest = new URLRequest(url);
- loader.load(request);
- addChild(loader);
- }
- private function configureListeners(dispatcher:IEventDispatcher):void {
- dispatcher.addEventListener(Event.COMPLETE, completeHandler);
- dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
- dispatcher.addEventListener(Event.INIT, initHandler);
- dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
- dispatcher.addEventListener(Event.OPEN, openHandler);
- dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
- dispatcher.addEventListener(Event.UNLOAD, unLoadHandler);
- }
- private function completeHandler(event:Event):void {
- trace("completeHandler: " + event);
- }
- private function httpStatusHandler(event:HTTPStatusEvent):void {
- trace("httpStatusHandler: " + event);
- }
- private function initHandler(event:Event):void {
- trace("initHandler: " + event);
- }
- private function ioErrorHandler(event:IOErrorEvent):void {
- trace("ioErrorHandler: " + event);
- }
- private function openHandler(event:Event):void {
- trace("openHandler: " + event);
- }
- private function progressHandler(event:ProgressEvent):void {
- trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
- }
- private function unLoadHandler(event:Event):void {
- trace("unLoadHandler: " + event);
- }
- private function clickHandler(event:MouseEvent):void {
- trace("clickHandler: " + event);
- var loader:Loader = Loader(event.target);
- loader.unload();
- }
- }
- }
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...