Хитрость заключается в том, чтобы установить режим индикатора выполнения на ручной, поскольку вы автоматически не прослушиваете прогресс загрузки данных. Вы хотите установить значение, чтобы индикатор выполнения мог обновляться сам по себе, поэтому руководство - это путь. Кроме того, проверьте это:
<s:Application minHeight="600" minWidth="955" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark">
<s:layout>
<s:HorizontalLayout/>
</s:layout>
<fx:Declarations>
<s:ArrayCollection id="arr">
<fx:Object label="Group One" currentValue="20" max="200" min="0"/>
<fx:Object label="Group Two" currentValue="50" max="300" min="0"/>
</s:ArrayCollection>
</fx:Declarations>
<fx:Script>
<![CDATA[
private function updateArr():void {
arr.getItemAt(0).currentValue = ns.value;
}
]]>
</fx:Script>
<s:List dataProvider="{arr}" itemRenderer="ProgressBarWithCurrentValue"/>
<s:NumericStepper id="ns" maximum="200" minimum="0" stepSize="10" value="20" change="updateArr()"/></s:Application>
Вот код itemrenderer, вы увидите режим как ручной:
<s:ItemRenderer autoDrawBackground="true" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
private function updateCurrentValue():void {
pb.setProgress(data.currentValue, data.max);
}
]]>
</fx:Script>
<mx:ProgressBar id="pb" maximum="{data.max}" minimum="{data.min}" mode="manual" updateComplete="updateCurrentValue()"/></s:ItemRenderer>
Когда вы просто устанавливаете itemrenderer на индикатор выполнения, он автоматически пытается найти источник данных, но в вашем случае вы будете обновляться и обновляться. Итак, вам понадобится элементарщик, где вы можете выполнить некоторые операции.