加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

带超时的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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读