2009-07-08 10 views
1

저는 연중 무휴로 데이터 진행 상황을 볼 수있는 플렉스 차트를 작성 중입니다. 나는 슬라이더를 사용하여 필터링하려고했지만 작동하지 않는 것 같습니다.선형 차트에 표시된 데이터 필터링

저는 데이터 제공 업체를 정확하게 필터링하지는 않지만 알파를 필터링하고 있습니다. 내 함수는 배열 컬렉션에서 모든 정보를 검색하지만 알파를 0으로 설정하므로 사용자가 슬라이더를 드래그하면 해당 연도가 해당 연도보다 낮 으면 데이터가 표시되고 알파를 100으로 설정합니다.

데이터가 있고, 축이 모두 설정되어 있고, 알파가 0으로 설정되어 있습니다. 문제는 내가 원하는 정보로 줄마다 정보를 표시하지 않고 대신 전체 그래프 만 표시한다는 것입니다. 슬라이더를 끝까지 드래그합니다.


<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
<mx:Script> 
<![CDATA[ 
    import mx.collections.ArrayCollection; 
    import mx.rpc.events.ResultEvent; 

    [Bindable] 
    public var expenses:ArrayCollection = new ArrayCollection([ 
     {Year:"1990", Profit:2000 }, 
     {Year:"1991", Profit:1000 }, 
     {Year:"1992", Profit:1500 }, 
     {Year:"1993", Profit:2100 }, 
     {Year:"1994", Profit:2500 }, 
     {Year:"1995", Profit:1500 }, 
     {Year:"1996", Profit:1900 }, 
      ]); 


      private function init():void { 
        expenses.filterFunction = sliderFilterFunc; 
        expenses.refresh(); 
       } 

      private function sliderFilterFunc(item:Object):Boolean{ 
       var result:Boolean = true; 
       pro.alpha=0; 
       if(item.Year<=slider.value || item.Year==slider.value) 
       { 
       pro.alpha=100; 
       return result; 
       } 
      return result; 


      } 

    ]]></mx:Script> 
    <mx:VBox horizontalCenter="0" top="10" horizontalAlign="center" height="100%"> 
     <mx:HSlider id="slider" minimum="1990" maximum="1996" value="220" liveDragging="true" change="init()" width="570" snapInterval="1" dataTipPrecision="0" labels="['1990','1996']" tickInterval="1" themeColor="#000000" borderColor="#FFFFFF" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#000000, #000000, #FFFFFF, #1400D1]" height="48" styleName="myDataTip"/> 
     <mx:Panel title="Line Chart with One Shadow"> 
     <mx:LineChart id="myChart" dataProvider="{expenses}" showDataTips="true" > 
       <mx:seriesFilters> 
       <mx:Array/> 
       </mx:seriesFilters> 
       <mx:horizontalAxis> 
       <mx:CategoryAxis 
         dataProvider="{expenses}" 
         categoryField="Year" 
       /> 
       </mx:horizontalAxis> 
       <mx:series> 
       <mx:LineSeries id="pro" alpha="0" 
         yField="Profit" 
         displayName="Profit" 
       /> 
       </mx:series> 
      </mx:LineChart> 

      <mx:Legend dataProvider="{myChart}" /> 
     </mx:Panel> 
    </mx:VBox> 

</mx:Application> 

답변

0

당신의 sliderFilterFunc이 시도 :

private function sliderFilterFunc(item:Object):Boolean{ 
    var result:Boolean = true; 
    pro.alpha=100; 
    if(item.Year<=slider.value || item.Year==slider.value) 
    { 
     return false; 
    } 
    return result; 
}