⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 progressbar.as

📁 用于flash/flex的 as3的 2D图形图像图表的动态生成
💻 AS
字号:
package flare.widgets
{
	import flare.display.TextSprite;
	
	import flash.display.Shape;
	import flash.display.Sprite;
	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.utils.Timer;
	
	public class ProgressBar extends Sprite
	{
		private var _backColor:uint;
		private var _fillColor:uint;
		private var _barWidth:Number;
		private var _barHeight:Number;
		private var _msg:TextSprite;
		
		private var _bar:Sprite;
		private var _back:Shape;
		private var _fill:Shape;
		private var _progress:Number = 0;
		
		public function get progress():Number { return _progress; }
		public function set progress(v:Number):void {
			v = isNaN(v) ? 0 : v;
			_progress = v;
			_fill.graphics.clear();
			_fill.graphics.beginFill(_fillColor);
			_fill.graphics.drawRoundRect(0, 0, v*_barWidth,
				_barHeight, _barHeight, _barHeight);
		}
		
		public function get bar():Sprite { return _bar; }
		public function get message():TextSprite { return _msg; }
		
		public function ProgressBar(message:String="LOADING", w:Number=200,
			h:Number=6, fillColor:uint=0xff3333, backColor:uint=0xcccccc)
		{
			_fillColor = fillColor;
			_backColor = backColor;
			_barWidth = w;
			_barHeight = h;
			
			addChild(_bar = new Sprite());
			addChild(_msg = new TextSprite(message));
			
			_bar.addChild(_back = new Shape());
			_bar.addChild(_fill = new Shape());
			
			_back.graphics.beginFill(_backColor);
			_back.graphics.drawRoundRect(0, 0, _barWidth,
				_barHeight, _barHeight, _barHeight);
			
			_msg.font = "Verdana";
			_msg.size = 18;
			_msg.color = _fillColor;
			_msg.letterSpacing = 2;
			_msg.y = 1.5 * _barHeight;
		}
		
		public function loadURL(ldr:URLLoader,
			onComplete:Function=null, onError:Function=null):URLLoader
		{
			var bar:ProgressBar = this;
			ldr.addEventListener(Event.COMPLETE, function(evt:Event):void {
            	this.progress = 1; // set progress bar to complete
            	var timer:Timer = new Timer(1000);
            	timer.addEventListener(TimerEvent.TIMER, function(e:Event):void
            	{
            		timer.stop(); timer = null;
            		try {
	            		if (onComplete!=null) onComplete();
	             	} catch (err:Error) {
	             		error(err); 
	             		return;
	             	}
            		// remove progress bar
            		if (parent) parent.removeChild(bar);
            	});
				timer.start();
            });
            ldr.addEventListener(ProgressEvent.PROGRESS,
            	function(evt:ProgressEvent):void {
            		bar.progress = evt.bytesLoaded / evt.bytesTotal;
            	}
            );
            var error:Function = function(e:Object=null):void {
            	bar.message.text = "FAILED";
            	trace(e.toString());
            	if (onError!=null) onError();
            };
            ldr.addEventListener(IOErrorEvent.IO_ERROR, error);
            ldr.addEventListener(SecurityErrorEvent.SECURITY_ERROR, error);
            return ldr;
		}
		
	} // end of class ProgressBar
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -