·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3写的一个加载进度条源代码

时间:2016-01-05 17:37酷播
[AS3]as3写的一个加载进度条源代码

[AS3]as3写的一个加载进度条源代码

  1. package com.iman.sps.sheet.ascript   
  2. {   
  3.     import flash.display.Sprite;   
  4.     import flash.display.*;    
  5.     import flash.events.*;    
  6.     import flash.filters.BitmapFilterQuality;    
  7.     import flash.filters.BlurFilter;    
  8.     import flash.geom.Matrix;    
  9.     import flash.net.*;    
  10.     import flash.text.TextField;    
  11.     import flash.utils.*;    
  12.     import flash.system.Capabilities;    
  13.        
  14.     import mx.events.*;    
  15.    
  16.     import mx.preloaders.IPreloaderDisplay;   
  17.        
  18.     public class MyProgressBar extends Sprite implements IPreloaderDisplay   
  19.     {   
  20.         [Embed(source="../image/logo.gif"mimeType="application/octet-stream")]    
  21.         public var _loadingLogo:Class;    
  22.            
  23.         private var dpbImageControl:Loader;    
  24.         private var _barSprite:Sprite;    
  25.         private var progressText:TextField;           
  26.         private var ProgressBarSpritIsAdded:Boolean = false;    
  27.    
  28.         public function MyProgressBar()   
  29.         {   
  30.             super();   
  31.         }   
  32.            
  33.         // Specify the event listeners.    
  34.         public function set preloader(preloader:Sprite):void {    
  35.             //Listen for 正在下载    
  36.             preloader.addEventListener(ProgressEvent.PROGRESS, handleProgress);    
  37.             //Listen for 下载完成    
  38.             preloader.addEventListener(Event.COMPLETE, handleComplete);    
  39.             //Listen for 正在初始化    
  40.             preloader.addEventListener(FlexEvent.INIT_PROGRESS, handleInitProgress);    
  41.             //Listen for 初始化完成    
  42.             preloader.addEventListener(FlexEvent.INIT_COMPLETE, handleInitComplete);    
  43.         }    
  44.            
  45.         // Initialize the Loader control in the override    
  46.         // of IPreloaderDisplay.initialize().    
  47.         public function initialize():void {    
  48.             //添加logo图    
  49.             dpbImageControl = new Loader();          
  50.             dpbImageControl.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_completeHandler);    
  51.             dpbImageControl.loadBytes(new _loadingLogo() as ByteArray);    
  52.             //dpbImageControl.load(new URLRequest("loadinglogo.swf"));    
  53.         }    
  54.            
  55.            
  56.         // After the SWF file loads, set the size of the Loader control.    
  57.         private function loader_completeHandler(event:Event):void    
  58.         {            
  59.             addChild(dpbImageControl);    
  60.             dpbImageControl.width = 136;    
  61.             dpbImageControl.height54;    
  62.             dpbImageControl.x = this.stage.stageWidth/2 - dpbImageControl.width/2;    
  63.             dpbImageControl.y = this.stage.stageHeight/2 - dpbImageControl.height/2 - 40;    
  64.         }      
  65.            
  66.         //    
  67.         private function addProgressBarSprit():void{    
  68.             //绘制背景渐变    
  69.             var matrix:Matrix=new Matrix();    
  70.             matrix.createGradientBox(this.stage.stageWidth,this.stage.stageHeight,Math.PI/2);    
  71.             var colors:Array=[0x3399ff,0xFFFFFF];    
  72.             var alphas:Array=[1,1];    
  73.             var ratios:Array=[0,255];    
  74.             this.graphics.lineStyle();    
  75.             this.graphics.beginGradientFill(GradientType.LINEAR,colors,alphas,ratios,matrix);           
  76.             this.graphics.drawRect(0,0,this.stage.stageWidth,this.stage.stageHeight);    
  77.             this.graphics.endFill();    
  78.                
  79.             //绘制中心白色发光    
  80.             var _Sprite1:Sprite = new Sprite();    
  81.             addChild(_Sprite1);    
  82.             _Sprite1.graphics.beginFill(0xffffff,0.45);    
  83.             _Sprite1.graphics.drawEllipse(this.stage.stageWidth/2-130, this.stage.stageHeight/2-90, 280, 100);    
  84.             _Sprite1.graphics.endFill();    
  85.             //滤镜实现发光边缘柔和               
  86.             var blur:BlurFilter = new BlurFilter();    
  87.             blur.blurX = 100;    
  88.             blur.blurY = 50;    
  89.             blur.quality = BitmapFilterQuality.HIGH;    
  90.             _Sprite1.filters = [blur];    
  91.                
  92.             //-------------------------------------------------    
  93.                
  94.             //绘制进度条背景    
  95.             var _Sprite2:Sprite = new Sprite();    
  96.             addChild(_Sprite2);    
  97.             _Sprite2.graphics.lineStyle(1, 0xCCCCCC);    
  98.             _Sprite2.graphics.beginFill(0xFFFFFF);    
  99.             _Sprite2.graphics.drawRect((this.stage.stageWidth/2 - 152), (this.stage.stageHeight/2 - 10), 304, 20);      
  100.             _Sprite2.graphics.endFill();    
  101.                
  102.             //-------------------------------------------------    
  103.                
  104.             //加载进度条Sprite    
  105.             _barSprite = new Sprite();    
  106.             addChild(_barSprite);    
  107.             _barSprite.x = this.stage.stageWidth/2 - 150;    
  108.             _barSprite.y = this.stage.stageHeight/2 - 8;    
  109.                
  110.             //-------------------------------------------------    
  111.                
  112.             //加载进度条文字    
  113.             progressText = new TextField();    
  114.             addChild(progressText);    
  115.             progressText.textColor = 0x333333;    
  116.             progressText.width = 300;    
  117.             progressText.height = 18;    
  118.             progressText.x = this.stage.stageWidth/2 - 152;    
  119.             progressText.y = this.stage.stageHeight/2 + 20;    
  120.         }    
  121.            
  122.         //刷新进度条    
  123.         private function drawProgressBar(bytesLoaded:Number, bytesTotal:Number):void    
  124.         {      
  125.             if (_barSprite != null && progressText != null){    
  126.                 var g:Graphics = _barSprite.graphics;    
  127.                 g.clear();    
  128.                 g.beginFill(0xCCCCCC);    
  129.                 g.drawRect(0, 0, 300*(bytesLoaded/bytesTotal),16);      
  130.                 g.endFill();       
  131.                    
  132.                 var matrix:Matrix=new Matrix();    
  133.                 matrix.createGradientBox(300*(bytesLoaded/bytesTotal),16,Math.PI/2);    
  134.                 var colors:Array=[0x0099CC,0x99cc77];    
  135.                 var alphas:Array=[1,1];    
  136.                 var ratios:Array=[0,255];    
  137.                 g.lineStyle();    
  138.                 g.beginGradientFill(GradientType.LINEAR,colors,alphas,ratios,matrix);           
  139.                 g.drawRect(0,0,300*(bytesLoaded/bytesTotal),16);    
  140.                 g.endFill();     
  141.                    
  142.                    
  143.             }    
  144.         }    
  145.            
  146.         //正在下载的进度    
  147.         private function handleProgress(event:ProgressEvent):void {    
  148.             //第一次处理时绘制进度条Sprit    
  149.             if (ProgressBarSpritIsAdded == false){    
  150.                 ProgressBarSpritIsAdded = true;    
  151.                 addProgressBarSprit();    
  152.             }    
  153.                
  154.             if (progressText != null){    
  155.                 progressText.text = "下载进度:已下载 " + event.bytesLoaded + " byte,总大小 " + event.bytesTotal + " byte.";    
  156.             }            
  157.             drawProgressBar(event.bytesLoaded, event.bytesTotal);    
  158.         }    
  159.            
  160.         private function handleComplete(event:Event):void {    
  161.             if (progressText != null){    
  162.                 progressText.text = "下载完成.";    
  163.             }    
  164.             drawProgressBar(1,1);           
  165.         }    
  166.            
  167.         private function handleInitProgress(event:Event):void {    
  168.             if (progressText != null){    
  169.                 progressText.text = "正在初始化...";    
  170.             }    
  171.             drawProgressBar(1,1);    
  172.         }    
  173.            
  174.         private function handleInitComplete(event:Event):void {    
  175.             if (progressText != null){    
  176.                 progressText.text = "初始化完成.";    
  177.             }    
  178.             drawProgressBar(1,1);            
  179.                
  180.             //0.03秒后抛出完成事件    
  181.             var timer:Timer = new Timer(300,1);    
  182.             timer.addEventListener(TimerEvent.TIMER, dispatchComplete);    
  183.             timer.start();         
  184.         }    
  185.            
  186.         private function dispatchComplete(event:TimerEvent):void {    
  187.             dispatchEvent(new Event(Event.COMPLETE));    
  188.         }    
  189.    
  190.            
  191.         public function get backgroundAlpha():Number   
  192.         {   
  193.             return 0;   
  194.         }   
  195.            
  196.         public function set backgroundAlpha(value:Number):void   
  197.         {   
  198.         }   
  199.            
  200.         public function get backgroundColor():uint   
  201.         {   
  202.             return 0;   
  203.         }   
  204.            
  205.         public function set backgroundColor(value:uint):void   
  206.         {   
  207.         }   
  208.            
  209.         public function get backgroundImage():Object   
  210.         {   
  211.             return null;   
  212.         }   
  213.            
  214.         public function set backgroundImage(value:Object):void   
  215.         {   
  216.         }   
  217.            
  218.         public function get backgroundSize():String   
  219.         {   
  220.             return null;   
  221.         }   
  222.            
  223.         public function set backgroundSize(value:String):void   
  224.         {   
  225.         }   
  226.            
  227.            
  228.            
  229.         public function get stageHeight():Number   
  230.         {   
  231.             return 0;   
  232.         }   
  233.            
  234.         public function set stageHeight(value:Number):void   
  235.         {   
  236.         }   
  237.            
  238.         public function get stageWidth():Number   
  239.         {   
  240.             return 0;   
  241.         }   
  242.            
  243.         public function set stageWidth(value:Number):void   
  244.         {   
  245.         }   
  246.            
  247.            
  248.     }   
  249. }   

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器