一个文字类型的flex进度条

来源:互联网 发布:php socket 超时设置 编辑:程序博客网 时间:2024/05/29 07:37

 package {
 import flash.display.Loader;
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.events.ProgressEvent;
 import flash.net.URLRequest;
 import flash.text.TextField;
 import flash.text.TextFieldAutoSize;
 import flash.text.TextFormat;

 public class loaderTest extends Sprite
 {
  private var loader:Loader;
  private var progress:TextField;
  private var textFormat:TextFormat;

  public function loaderTest()
  {
   textFormat = new TextFormat();
   textFormat.color = "0x0000FF";
   createLoader();
   createProgress();
   load(new URLRequest("http://www.tubo123.com/upload/ba610dd0828c9a17e8378e817ed1315a.gif"));
  }
  
  private function load(urlReq:URLRequest) :void {
   loader.load(urlReq);
   if(!contains(progress)) {
    addChild(progress);
   }
  }
  
  private function createLoader():void {
   loader = new Loader();
   loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressHandler);
   loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
   loader.contentLoaderInfo.addEventListener(Event.INIT,initHandler);
  }
  
  private function createProgress():void {
   progress = new TextField();
   progress.autoSize = TextFieldAutoSize.LEFT;
   progress.border = true;
   progress.background = true;
   progress.selectable = false;
   progress.text = "LOADING ... ";
   progress.setTextFormat(textFormat);
  }
  
  /**
   * loader init
   **/
  private function initHandler(e:Event) :void {
   loader.content.width
   this.addChild(loader.content);
  }
  
  /**
   * when progress return,run it;
   **/
  private function progressHandler(e:ProgressEvent) :void {
   var r:Number = Math.floor(e.bytesLoaded/e.bytesTotal * 100);
   progress.text = "LOADING: " + r + " %";//"loading:" + Math.floor(e.bytesLoaded/1024) + "/" + Math.floor(e.bytesTotal/1024) + " KB";
   progress.setTextFormat(textFormat);
  }
  
  /**
   * loader complete run
   **/
  private function completeHandler(e:Event) :void {
   removeChild(progress);
  }
 }
}