Flex chart 动态添加、删除、隐藏、反转曲线,含特效

    对于需要动态往Chart里面添加删除曲线的人,这是一个非常好的例子,P话不说,自己拷贝代码去运行。

	
		
			import mx.states.SetProperty;
			import mx.charts.series.LineSeries;
			import mx.collections.ArrayCollection;
			
			[Bindable]
			private var dp:ArrayCollection = new ArrayCollection ([{"date":"1.1.08", "First":Math.random() * 100},{"date":"1.2.08", "First":Math.random() * 100},{"date":"1.3.08", "First":Math.random() * 100},{"date":"1.4.08", "First":Math.random() * 100},{"date":"1.5.08", "First":Math.random() * 100},{"date":"1.6.08", "First":Math.random() * 100},{"date":"1.7.08", "First":Math.random() * 100},{"date":"1.8.08", "First":Math.random() * 100}]);
			private var dp2:ArrayCollection = new ArrayCollection ([{"date":"1.1.08", "First":Math.random() * 100, "Second":Math.random() * 100},{"date":"1.2.08", "First":Math.random() * 100, "Second":Math.random() * 100},{"date":"1.3.08", "First":Math.random() * 100, "Second":Math.random() * 100},{"date":"1.4.08", "First":Math.random() * 100, "Second":Math.random() * 100},{"date":"1.5.08", "First":Math.random() * 100, "Second":Math.random() * 100},{"date":"1.6.08", "First":Math.random() * 100, "Second":Math.random() * 100},{"date":"1.7.08", "First":Math.random() * 100, "Second":Math.random() * 100},{"date":"1.8.08", "First":Math.random() * 100, "Second":Math.random() * 100}]);
			private var removedFlag:Boolean = false;
			private var currentData:ArrayCollection = dp;
			private var slideEffect:Boolean = false;
			
			private function addSeries():void{
				for each (var obj:Object in currentData)
				{
					obj.Second = Math.random() * 100;
				}
				currentData.refresh();
				
				applyInterpolateEffect();
				var lineSeries:LineSeries = new LineSeries();
				lineSeries.yField = "Second";
				lineSeries.displayName = "Second";
				lineSeries.setStyle("showDataEffect",rearange);
				var series:Array = chart.series;
				series.push(lineSeries);
				chart.series = series;
			}
			
			private function showSeries():void
			{
				applyInterpolateEffect(); 
				for each (var obj:Object in currentData)
				{
					obj.Second = Math.random() * 100;
				}
				currentData.refresh(); 
				var series:Array = chart.series;
				for (var i:int=0;i<series.length;i++)
				{
					if (series[i].yField == "Second")
					{
						LineSeries(series[i]).alpha = 1;
						break;
					}
				}
			}
			
			private function removeSeries():void
			{
				applyInterpolateEffect();
				for each (var obj:Object in currentData)
				{
					obj.Second = 0;
				}
				currentData.refresh();
				//if (slideEffect)
				removedFlag = true 
			}
			
			private function interpolateEndHandler():void
			{   
				if (!removedFlag)
					return;
				var series:Array = chart.series;
				for (var i:int=0;i<series.length;i++)
				{
					if (series[i].yField == "Second")
					{
						LineSeries(series[i]).alpha = 0;
						break;
					}
				}
				removedFlag = false;
			}
			
			private function changeDataHandler():void
			{ 
				var series:Array = chart.series;
				for each(var lineSeries:LineSeries in series)
				{
					lineSeries.setStyle("hideDataEffect",slide)
					lineSeries.setStyle("showDataEffect",slide)
				}
				chart.dataProvider = dp2;
				currentData = dp2;
				slideEffect =true;
			}
			
			private function applyInterpolateEffect():void
			{ 
				var series:Array = chart.series;
				for each(var lineSeries:LineSeries in series)
				{
					lineSeries.setStyle("showDataEffect",rearange);
					lineSeries.setStyle("hideDataEffect",null);
					slideEffect = false;
				}
			}
		
		
	
	
		
		
		
		
		 
		
			
				
			
			
				
			
		


已有 1 人发表留言,猛击->>这里<<-参与讨论


JavaEye推荐
  • —软件人才免语言低担保 赴美带薪读研!—
  • 限时报名参加Oracle技术大会



你可能感兴趣的:(Flex chart 动态添加、删除、隐藏、反转曲线,含特效)