带超时的urlLoader
发布时间:2020-12-15 17:43:55 所属栏目:百科 来源:网络整理
导读:package cagWeb.service.properties.util{import flash.events.Event;import flash.events.IOErrorEvent;import flash.events.ProgressEvent;import flash.events.SecurityErrorEvent;import flash.events.TimerEvent;import flash.net.URLLoader;import fla
package cagWeb.service.properties.util { import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.ProgressEvent; import flash.events.SecurityErrorEvent; import flash.events.TimerEvent; import flash.net.URLLoader; import flash.net.URLRequest; import flash.utils.Timer; /** * 带超时处理的urlLoader * @author */ public class URLLoader extends flash.net.URLLoader { private var _timeoutTimer:Timer; public var timeout:Number; // default timeout value public static const TIMEOUT:String = 'loaderTimeout'; [Event(name="loaderTimeout",type="flash.events.Event")] public function URLLoader(timeout:Number = 1000,request:URLRequest=null):void { super(request); this.timeout = timeout; _timeoutTimer = new Timer(timeout); } override public function load(request:URLRequest):void { _timeoutTimer.addEventListener(TimerEvent.TIMER,handleTimeout); _timeoutTimer.delay = timeout; addEventListener(IOErrorEvent.IO_ERROR,handleLoadActivity); addEventListener(SecurityErrorEvent.SECURITY_ERROR,handleLoadActivity); addEventListener(Event.COMPLETE,handleLoadActivity); addEventListener(ProgressEvent.PROGRESS,handleLoadActivity); addEventListener(Event.OPEN,handleLoadActivity); super.load(request); _timeoutTimer.start(); } override public function close():void { killTimer(); super.close(); } private function handleLoadActivity(event:Event):void { killTimer(); } private function killTimer(event:Event = null):void { removeEventListener(IOErrorEvent.IO_ERROR,handleLoadActivity); removeEventListener(SecurityErrorEvent.SECURITY_ERROR,handleLoadActivity); removeEventListener(Event.COMPLETE,handleLoadActivity); removeEventListener(ProgressEvent.PROGRESS,handleLoadActivity); removeEventListener(Event.OPEN,handleLoadActivity); _timeoutTimer.reset(); _timeoutTimer.removeEventListener(TimerEvent.TIMER,handleTimeout); if(event) super.dispatchEvent(event.clone()); } private function handleTimeout(event:TimerEvent):void { killTimer(); super.dispatchEvent(new Event(TIMEOUT,true)); // this.dispatchEvent(new Event(TIMEOUT,true)); // var dis:EventDispatcher = new EventDispatcher(this); // dis.dispatchEvent(new Event(TIMEOUT,true)); } } } ? 具备请求url的超时功能。 ? ? var urlload:UrlLoader = new UrlLoader(); urlLoad.timerout=2000; urlLoad.addEventListener(URLLoader.TIMEOUT,timerOutHandler); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |