带超时的urlLoader

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);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值