`
lanqiu17
  • 浏览: 17180 次
社区版块
存档分类
最新评论

as3 下载测速源代码

    博客分类:
  • as3
as3 
阅读更多

最近几天同事叫我帮他做个下载测速,用flash做。当时,我这边项目刚做完,闲来无事。 于是,我就答应了。
具体的就不说,下面是源码,呵呵,高手请绕走哈。

package 
{
	import flash.errors.*;
	import flash.events.*;
	import flash.net.URLRequest;
	import flash.net.URLStream;
	import flash.utils.Timer;

	public class DownloadMechine
	{
		
		private var stream:URLStream;
		private var req:URLRequest;

		var second_data:uint = 0;
		var before_data:uint = 0;
		public var timer:Timer = new Timer(1000);
		public function DownloadMechine()
		{
			stream = new URLStream();
			req = new URLRequest();
			configureListeners(stream);
			timer.addEventListener(TimerEvent.TIMER,ontimer);
		}

		public function setUrl(url:String):void
		{
			url = url + "?time=" + new Date().getTime();
			trace("请求url:" + url);
			req.url = url;
			

		}

		public function download() :void
		{
			
			try
			{
				stream.load(req);
				timer.start();
			}
			catch (error:Error)
			{
				stop();
				trace("Unable to load requested URL.");
			}
			
		}

		private function configureListeners(dispatcher:EventDispatcher):void
		{
			
			dispatcher.addEventListener(Event.COMPLETE, completeHandler);
			dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
			dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
			dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
		}
		
		public function registerLisener(evt:String,handle:Function):void {
			try {
				stream.addEventListener(evt,handle);
			} catch (error:Error)
			{
				 
				trace("register handler error.");
			}
			
		}

		public function stop():void
		{
			if (timer.running) {
				timer.stop();
			}
			
			if (stream.connected) {
				stream.close();
			}
			
		}

		private function completeHandler(event:Event):void
		{
			stop();
			trace("completeHandler: " + event);
		}
		
		
		private function ontimer(evt:TimerEvent):void
		{
			trace("recv_data: "+ (second_data / 1024) + "(KB/S)");
			second_data = 0;
		}


		private function progressHandler(event:ProgressEvent):void
		{
			 
			var temp = event.bytesLoaded;
			second_data +=  temp - before_data;
			before_data = temp;
		}

		private function securityErrorHandler(event:SecurityErrorEvent):void
		{
			stop();
			trace("securityErrorHandler: " + event);
		}

		public function getData():uint
		{
			return second_data;
		}
		public function setData(data:uint):void
		{
			second_data = data;
		}

		private function ioErrorHandler(event:IOErrorEvent):void
		{
			stop();
			trace("ioErrorHandler: " + event);
		}
	}
}

  测试代码我就不写了。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics