Flex进度条

Flex中,进度条的皮肤,以及使用Timer让它自动增加~

mxml中:

 1 <mx:ProgressBar id="proBar"
 2                     verticalCenter="0"
 3                     horizontalCenter="0"
 4                     trackSkin="probar.borderskin"
 5                     fontSize="12"
 6                     height="24"
 7                     color="#336699"
 8                     label="正在加载..."
 9                     labelPlacement="center"
10                     maskSkin="probar.maskskin"
11                     maximum="100"
12                     direction="right"
13                     mode="manual"
14                     minimum="0"
15                     barSkin="probar.updatedisplay_"
16                     visible="false"
17                     alpha="0.9">
18 
19     </mx:ProgressBar>

as中:

(注意:没有贴上整个的,只是取了其中相关的)

 1 private var requestDataTimer:Timer = new Timer(50);
 2 
 3 public function complete():void
 4 {
 5     //register event.
 6     requestDataTimer.addEventListener(TimerEvent.TIMER, progressOnRequestDataTimer);
 7 }
 8 
 9 private function progressOnRequestDataTimer(event:TimerEvent):void
10 {
11     if (progressInt > separateProgressInt)
12     {
13         proBar.label = "数据量大或网络慢, 请耐心...";
14         requestDataTimer.stop();
15         return;
16     }
17     
18     proBar.setProgress(progressInt, 100);
19     proBar.label = "当前进度: " + progressInt.toString() + "%" + "(正在请求数据...)";
20     progressInt++;
21 }

呵呵,皮肤是在网上找来的(其实本人对flex研究不深,这皮肤里面的弯弯绕绕也没完全看明白,而且感觉flex的每次升级都变动很大,皮肤相关的很多属性都不是以前能用的,导致学习成本都很高啊~所以拿过来修改一番能用就用上了):

1.borderskin.as

 1 import mx.skins.halo.ProgressTrackSkin;
 2     import mx.skins.Border;
 3     import mx.styles.StyleManager;
 4     import mx.utils.ColorUtil;
 5     
 6     /**
 7      * ...
 8      * @author Thyiad
 9      */
10     public class borderskin extends ProgressTrackSkin
11     {
12         
13         public function borderskin()
14         {
15             super();
16         }
17         
18         override protected function updateDisplayList(w:Number, h:Number):void
19         {
20             super.updateDisplayList(w, h);
21             
22             // User-defined styles
23             var borderColor:uint = getStyle("borderColor");
24             var fillColors:Array = getStyle("trackColors") as Array;
25             this.styleManager.getColorNames(fillColors);
26             
27             // ProgressTrack-unique styles
28             var borderColorDrk1:Number = ColorUtil.adjustBrightness2(borderColor, -30);
29             
30             graphics.clear();
31             
32             drawRoundRect(0, 0, w, h, 0, [borderColorDrk1, borderColor], 0, verticalGradientMatrix(0, 0, w, h));
33             
34             drawRoundRect(1, 1, w - 2, h - 2, 0, fillColors, 0, verticalGradientMatrix(1, 1, w - 2, h - 2));
35         }
36     
37     }

2.maskskin.as

 1         import flash.display.Graphics;
 2     
 3     import mx.skins.halo.ProgressMaskSkin;
 4     
 5     /**
 6      * ...
 7      * @author Thyiad
 8      */
 9     public class maskskin extends ProgressMaskSkin
10     {
11         
12         public function maskskin()
13         {
14             super();
15         }
16         
17         override protected function updateDisplayList(w:Number, h:Number):void
18         {
19             super.updateDisplayList(w, h);
20             
21             // draw the mask
22             var g:Graphics = graphics;
23             g.clear();
24             g.beginFill(0xFFFF00);
25             //g.drawRect(1, 1, w - 2, h - 2);
26             g.drawRoundRect(1, 1, w - 2, h - 2, 20, 20);
27             g.endFill();
28         }
29     }    

3.updatedisplay_.as

 1     import flash.display.Graphics;
 2     import mx.skins.halo.ProgressIndeterminateSkin;
 3     import mx.styles.StyleManager;
 4     import mx.utils.ColorUtil;
 5     import mx.controls.ProgressBar;
 6     import mx.skins.halo.ProgressTrackSkin;
 7     
 8     /**
 9      * ...
10      * @author Thyiad
11      */
12     public class updatedisplay_ extends ProgressIndeterminateSkin
13     {
14         
15         public function updatedisplay_()
16         {
17             super();
18         }
19         
20         override protected function updateDisplayList(w:Number, h:Number):void
21         {
22             super.updateDisplayList(w, h);
23             
24             var barColorStyle:* = 0xff9935; //blue
25             var barColor:uint=this.styleManager.isValidStyleValue(barColorStyle) ? barColorStyle : getStyle("themeColor");
26             
27             var barColor0:Number = ColorUtil.adjustBrightness2(barColor, 0);
28             var hatchInterval:Number = getStyle("indeterminateMoveInterval");
29             
30             if (isNaN(hatchInterval))
31                 hatchInterval = 28;
32             
33             var g:Graphics = graphics;
34             
35             g.clear();
36             
37             if (w == 0)
38             {
39             }
40             else
41             {
42                 g.beginFill(barColor0, 1);
43                 g.moveTo(0, 1);
44                 g.lineTo(w, 1);
45                 g.curveTo(w + 10, h / 2, w, h - 1);
46                 g.lineTo(0, h - 1);
47                 g.lineTo(0, 1);
48                 g.endFill();
49             }
50         }
51     
52     }
原文地址:https://www.cnblogs.com/thyong/p/3245431.html