<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" viewSourceURL="srcview/index.html"> <mx:Script> <![CDATA[ import mx.core.UIComponent; import mx.controls.LinkButton; import mx.collections.IViewCursor; import mx.charts.series.items.LineSeriesItem; import mx.charts.events.ChartItemEvent; private var startIndex:Number=0; private var endIndex:Number=0; private function onSelectedItems( event:ChartItemEvent ):void { var a:Array = chart.selectedChartItems; var len:int = a.length; if( len > 1 ) { startIndex = LineSeriesItem( a[0] ).index + startIndex; endIndex = startIndex + len -1 ; dummy1.refresh(); trace(">>>>> ", startIndex, endIndex ); } var ui:LinkButton = new LinkButton(); ui.label = startIndex + "-" + endIndex + "->"; ui.data = {start: startIndex , end:endIndex}; ui.addEventListener( MouseEvent.CLICK,onClickFallBack , false, 0 , true ); drillBox.addChild( ui ); } private function ff( item:Object ):Boolean { var i:int = dummy1.list.getItemIndex( item ); if( i < startIndex || i>endIndex ) return false return true; } private function reset():void { startIndex = 0; endIndex = 0; dummy1.filterFunction = null; dummy1.refresh(); dummy1.filterFunction = ff; var len:int = drillBox.numChildren-1 for( var i:int = len; i > 0 ; i-- ) { drillBox.removeChildAt(i); } } private function onClickFallBack(e:MouseEvent):void { var b:LinkButton = e.currentTarget as LinkButton; drillIntoByRange( b.data ); var c:int = drillBox.getChildIndex( b ); var len:int = drillBox.numChildren-1; for( var i:int=len ;i>c;i--) { drillBox.removeChildAt( i ); } } private function drillIntoByRange( d:Object):void { startIndex = d.start; endIndex = d.end; dummy1.refresh(); } ]]> </mx:Script> <mx:Panel width="90%" height="90%" horizontalCenter="0" verticalCenter="0"> <mx:HBox id="drillBox" horizontalGap="1" paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10"> <mx:LinkButton label="Rest=>" click="reset();"/> </mx:HBox> <mx:LineChart id="chart" width="100%" height="100%" showAllDataTips="true" selectionMode="multiple" change="onSelectedItems(event)"> <mx:series> <mx:LineSeries id="ls1" dataProvider="{dummy1}" yField="value" showDataEffect="{interpolateIn}"/> </mx:series> </mx:LineChart> </mx:Panel> <mx:SeriesInterpolate id="interpolateIn" duration="300"/> <mx:ArrayCollection id="dummy1" filterFunction="{ff}" > <mx:Object label="a1" value="190"/> <mx:Object label="a2" value="920"/> <mx:Object label="a3" value="90"/> <mx:Object label="a4" value="650"/> <mx:Object label="a5" value="290"/> <mx:Object label="a7" value="490"/> <mx:Object label="a6" value="390"/> <mx:Object label="a12" value="990"/> <mx:Object label="a8" value="90"/> <mx:Object label="a9" value="590"/> <mx:Object label="a10" value="90"/> <mx:Object label="a11" value="890"/> <mx:Object label="b3" value="300"/> <mx:Object label="b2" value="200"/> <mx:Object label="b6" value="600"/> <mx:Object label="b1" value="100"/> <mx:Object label="b7" value="700"/> <mx:Object label="b5" value="500"/> <mx:Object label="b4" value="400"/> <mx:Object label="b11" value="1200"/> <mx:Object label="b8" value="800"/> <mx:Object label="b12" value="1300"/> <mx:Object label="b9" value="900"/> <mx:Object label="b10" value="1000"/> </mx:ArrayCollection> </mx:Application>