`
lipbb
  • 浏览: 68506 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flex4水平缩放LineChart并使用滚动条浏览

阅读更多
适用于当LineChart显示的数据较多时(这时x轴上的标签会很接近)

水平滚动X轴数据,Y轴保持不变



代码如下:
<?xml version="1.0" encoding="utf-8"?>
<s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009"
		 xmlns:s="library://ns.adobe.com/flex/spark"
		 xmlns:mx="library://ns.adobe.com/flex/mx"
		 xmlns:chartClasses="views.charts.chartClasses.*"
		 width="600" height="500" creationComplete="panel1_creationCompleteHandler(event)"
		 title="可滚动的LineChart">
	
	<fx:Script>
		<![CDATA[
			import mx.formatters.DateFormatter;
			import mx.collections.ArrayCollection;
			import mx.events.FlexEvent;
			
			import spark.effects.Move;
			import spark.events.IndexChangeEvent;
			
			
			[Bindable]
			private var historyData:ArrayCollection;
			
			protected function panel1_creationCompleteHandler(event:FlexEvent):void
			{
				var len:int = 1 * 60 * 1000;
				var now:Date = new Date();
				historyData = new ArrayCollection();
				
				now.setTime(now.time - len);
				for (var i:int = 0; i < len / 1000; i++) 
				{
					now.setTime(now.time + 1000);
					var t:Date = new Date(now.time);
					var gas:Object = {time:t, value:Math.random() * 0.9};
					historyData.addItem(gas);
				}
				
				chart1.dataProvider = historyData;
			}
			
			protected function hAxisLabelFunction(categoryValue:Object, previousCategoryValue:Object, axis:CategoryAxis, categoryItem:Object):String
			{
				var _df:DateFormatter = new DateFormatter;
			        _df.formatString = "JJ:NN:SS";
			        return _df.format(categoryValue);
			}
			
			protected function hsb_changeHandler(event:Event):void
			{
				setDataProvider();
			}
			
			private var totalPage:int = 1;
			
			protected function zoomin(event:MouseEvent):void
			{
				if(totalPage >= (1 << 4))
					return;
				hsb.value = hsb.value * 0.5;
				totalPage = totalPage << 1;
				hsb.maximum = (totalPage - 1) * 10;
				
				setDataProvider();
			}
			
			protected function zoomout(event:MouseEvent):void
			{
				if(totalPage == 1)
					return;
				
				hsb.value = hsb.value * 2;
				totalPage = totalPage >> 1;
				hsb.maximum = (totalPage - 1) * 10;
				
				setDataProvider();
			}
			
			protected function setDataProvider():void
			{
				var j:int = int(hsb.value / hsb.maximum * (hsb.maximum / 10 / totalPage) * historyData.length);
				
				var ac:ArrayCollection = new ArrayCollection();
				var len:int = Math.ceil(1.0 * historyData.length / totalPage);
				for (var i:int = 0; (i < len) && (i + j) < historyData.length; i++) 
				{
					ac.addItem(historyData.getItemAt(i + j));
				}
				
				chart1.dataProvider = ac;
			}
			
			protected function widthDropDown_changeHandler(event:IndexChangeEvent):void
			{
				totalPage = int(widthDropDown.selectedItem.@value);
				hsb.maximum = (totalPage - 1) * 10;
				hsb.value = 0;
				
				setDataProvider();
			}
			
		]]>
	</fx:Script>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<s:controlBarContent>
		<s:HGroup width="100%" height="25" horizontalAlign="center" verticalAlign="middle">
			<s:DropDownList id="widthDropDown" change="widthDropDown_changeHandler(event)"
							labelField="@label" requireSelection="true">
				<s:XMLListCollection>
					<fx:XMLList xmlns="">
						<node label="原始宽度" value="1"/>
						<node label="两倍宽度" value="2"/>
						<node label="四倍宽度" value="4"/>
					</fx:XMLList>
				</s:XMLListCollection>
			</s:DropDownList>
			<s:Button label="放大" click="zoomin(event)"/>
			<s:Button label="缩小" click="zoomout(event)"/>
			<s:HScrollBar id="hsb" width="100%" height="20" change="hsb_changeHandler(event)"
						  maximum="0" minimum="0" snapInterval="1" value="0"/>
		</s:HGroup>
	</s:controlBarContent>
	
	<s:Group id="chartGroup" width="100%" height="100%">
		<mx:LineChart id="chart1" width="100%" height="100%">
			<mx:horizontalAxis>
				<mx:CategoryAxis id="hAxis1" categoryField="time" displayName="时间"
								 labelFunction="hAxisLabelFunction"/>
			</mx:horizontalAxis>
			
			<mx:verticalAxis>
				<mx:LinearAxis id="vAxis1" baseAtZero="true" displayName="Gas比例" maximum="1"/>
			</mx:verticalAxis>
			
			<mx:series>
				<mx:LineSeries displayName="Gas" form="curve" xField="time" yField="value"/>
			</mx:series>
		</mx:LineChart>
		
		
	</s:Group>
</s:Panel>


好像没什么需要解释的。
分享到:
评论
1 楼 zy14shadow 2012-04-18  

相关推荐

    flex 改变linechart datatips 显示样式代码

    总结来说,改变Flex LineChart Datatips的显示样式主要包括两步:一是定义自定义的CSS样式类,并在Chart组件中引用;二是根据需求编写`dataTipFunction`函数,自定义Datatips的内容。通过这样的方式,我们可以使Line...

    flex滚动条三种实现方式

    在Flex容器上,如果`overflow`属性设置为`auto`或`scroll`,则会在需要时显示水平或垂直滚动条。例如: ```css .container { display: flex; overflow: auto; /* 或 'scroll' */ } ``` 这种方式简单易用,但...

    经过修改皮肤的flex4滚动条。

    在Flex4中,Scroller组件是一个容器,它可以包含其他组件,并提供垂直或水平滚动条,以便用户在内容超出显示区域时进行滚动。默认情况下,滚动条的样式可能不符合所有设计需求,因此,自定义滚动条皮肤是一个常见的...

    flex LineChart

    以下是我最近做flex组件编程时的总结,是主要针对lineChart的用法,其中某些属性对同是有横纵坐标的columnChart、barChart等都有效,比如对背景的网格线、横纵坐标线条的粗细颜色和标签的设置都有效。

    Flex LineChart

    Flex Chart Sytles 简单示例 基本样式使用,网上搜到的收藏下。

    flex LineChart实例

    根据提供的文件信息,我们可以从标题、描述以及部分代码中提炼出与Flex LineChart相关的知识点。 ### Flex LineChart实例 #### 标题理解 标题“Flex LineChart实例”明确指出这是一个关于Flex框架下的线形图(Line...

    Flex BlazeDs 推数据生成lineChart实例

    Flex BlazeDs推数据生成lineChart实例是一个典型的前端与后端实时通信的应用场景,它结合了Adobe Flex技术用于前端用户界面的构建,BlazeDS作为数据推送服务,以及使用lineChart组件来展示动态更新的数据。...

    flex_linechart

    flex项目开发过程中的动态linechart,主要是曲线可以增量的刷新,纵坐标、刷新频率可以调整,也可以稍微改下根据配置进行曲线设置,这个是少了获取数据的方法用随机数代替,项目中用到动态linechart的可以参考。

    flex 图片缩放

    例如,如果一个16:9比例的图片被放入一个4:3的Image组件中,图像将按比例缩放,使得宽度适应4,高度为3的比列,结果会在上下两侧留下空白。 然而,有时候我们需要强制图像拉伸以适应特定的宽高比,这通常发生在希望...

    Flex 饼形图 piechart 柱形图 columnchart 条形图 barchart 折线图 linechart

    在Flex中,饼形图(piechart)、柱形图(columnchart)、条形图(barchart)和折线图(linechart)是数据可视化的重要工具,它们广泛应用于数据分析、报表展示以及业务指标的可视化。 **饼形图(Pie Chart)** 饼形...

    flex横向条形图增加滚动条分页显示数据

    在Flex中,我们可以使用`HScroller`组件来实现水平滚动条。这个组件会自动根据容器内容的宽度来调整其滚动范围。 以下是实现步骤: 1. **创建Flex项目**:使用Flex Builder或相关的IDE(如Flash Builder)创建一个...

    【实例】flex4 动态获取对象属性,动态生成数据源,动态生成lineChart,清除数据。

    flex4 动态获取对象属性,动态生成数据源,动态生成lineChart,清除数据。 1.该图表的数据源为ArrayCollection类型的arrayC 2.每增加一条线,其实就是增加一个数据源中的ArrayCollection每个对象的一个属性,且属性...

    flex4 为垂直滚动条VScrollBar换肤

    在Flex4中,开发者可以利用其强大的皮肤定制能力来改变应用程序的外观和感觉,从而提供更个性化的用户体验。本文将详细讲解如何为垂直滚动条VScrollBar进行换肤,以提升应用界面的美观度。 首先,我们需要理解Flex4...

    Flex chart line 线性表(单线和双线)

    Flex Chart Line是Adobe Flex框架中的一个关键组件,用于创建数据可视化图表,特别是线性图表。在本场景中,我们关注的是“单线”和“双线”两种类型的线性图表。Flex 4.5是Adobe Flex SDK的一个版本,它提供了更...

    flex 4 check box legend chart

    在Flex 4中,使用Chart类可以创建各种类型的图表,如条形图、折线图、饼图等。为了实现复选框图例,我们需要利用Legend类和CheckBox组件。以下是一些关于创建此类图表的知识点: 1. **Legend类**:Flex 4的Legend类...

    flex Chart

    2. **Chart类型**:除了柱状图,Flex Chart还包括线性图(LineChart)、饼图(PieChart)、面积图(AreaChart)等多种图表类型,每种都有其特定的用途和展示效果。 3. **图表系列(Series)**:每个图表由一个或多个...

    自定义滚动条flex

    自定义滚动条.用canvas做滚动条条 用button做滑块

    flex textlayout 滚动条

    2. **滚动条组件**:在Flex中,滚动条组件(HScrollBar和VScrollBar)用于在内容超过视口大小时提供水平和垂直导航。它们与Scroller组件一起工作,自动管理显示和隐藏。当TextLayout容器内的内容不能完全展示时,...

    Flex 拖动,滚动曲线图

    总的来说,"Flex 拖动,滚动曲线图 LineChart"涉及的知识点包括:Flex编程、ActionScript 3.0、mx.charts库中的LineChart组件、mx.controls.Scroller组件的使用,以及鼠标事件处理和图形渲染的原理。掌握这些知识点...

Global site tag (gtag.js) - Google Analytics