Сначала нам нужно написать класс индикатора выполнения и расширить класс индикатора выполнения
ColorChangingProgressBar.as
package
{
import mx.controls.ProgressBar;
[Style(name="progressBarColor", type="Number", format="Color")]
public class ColorChangingProgressBar extends ProgressBar
{
public function ColorChangingProgressBar()
{
super();
}
}
}
А затем напишите класс скина для индикатора выполнения.
ColorChangingProgressBarBarSkin.mxml
<!-- states -->
<s:states>
<s:State name="normal" />
<s:State name="disabled" />
</s:states>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
private var _barColor:Number = 0;
[Bindable]
public function get barColor():Number
{
return _barColor;
}
public function set barColor(value:Number):void
{
_barColor = value;
}
/**
* Listen for any changes to the style so we can update our progres bar skin if needed
*/
override public function styleChanged(styleProp:String):void
{
super.styleChanged(styleProp);
}
/**
* Initialize the skin by setting up the bar color
*/
protected function initSkin(event:FlexEvent):void
{
barColor = this.getStyle("progressBarColor") as Number;
}
]]>
</fx:Script>
<s:Rect top="0" right="0" left="0" bottom="0">
<s:fill>
<s:SolidColor color="{barColor}" />
</s:fill>
</s:Rect>
и необходимо добавить класс скина в приложение.
ProgressBarExample.mxml
<fx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";
@namespace local "*";
local|ColorChangingProgressBar
{
barSkin: ClassReference("ColorChangingProgressBarBarSkin");
}
</fx:Style>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
progressBar.setProgress(50, 100);
progressBar2.setProgress(75, 100);
progressBar3.setProgress(85, 100);
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout paddingLeft="10" paddingRight="10" />
</s:layout>
<local:ColorChangingProgressBar id="progressBar" progressBarColor="#ff0000" label="" width="300" mode="manual" />
<local:ColorChangingProgressBar id="progressBar2" progressBarColor="#00ff00" label="" width="300" mode="manual" />
<local:ColorChangingProgressBar id="progressBar3" progressBarColor="#0000ff" label="" width="300" mode="manual" />
Этот пример будет работать.