Flex 有许许多多的chart组件,他们的父类都是ChartBase。ChartBase下面有两个直接子类:CartesianChart 和 PolarChart。除了PieChart 继承自PolarChart外,其他的chart图形都继承自CartesianChart。因此如果像改变图表元素的颜色的话,就需要对这两种类型的chart做不同的处理。
在下面的例子里,我们在lengend 做一下定制来得到我们想要的结果。
主程序:
<?xml version="1.0"?> <!-- Simple example to demonstrate the PieChart control. --> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"> <fx:Script> <![CDATA[ import mx.charts.HitData; import mx.charts.series.PieSeries; import mx.charts.series.items.PieSeriesItem; import mx.collections.ArrayCollection; [Bindable] private var medalsAC:ArrayCollection = new ArrayCollection( [ { Country: "USA", Gold: 35, Silver:39, Bronze: 29 }, { Country: "China", Gold: 32, Silver:17, Bronze: 14 }, { Country: "Russia", Gold: 27, Silver:27, Bronze: 38 } ]); private function dataTipFunction(hitData:HitData):String { var temp:String= (" " + (hitData.chartItem as PieSeriesItem).percentValue).substr(0,6); //对于PieChart来说,PieSeriesItem有一个percentValue的值来标记百分比 return hitData.item[(hitData.element as PieSeries).nameField] + "(" + temp + "%)"; } ]]> </fx:Script> <s:layout> <s:VerticalLayout/> </s:layout> <mx:VDividedBox width="100%" height="100%"> <mx:Panel title="Pie Chart" height="100%" width="100%"> <mx:PieChart id="chart" height="100%" width="100%" paddingRight="5" paddingLeft="5" showDataTips="true" dataTipFunction="dataTipFunction" dataProvider="{medalsAC}"> <mx:series> <mx:PieSeries nameField="Country" labelPosition="callout" field="Silver"> <mx:filters> <fx:Array/> </mx:filters> </mx:PieSeries> </mx:series> </mx:PieChart> <mx:Legend dataProvider="{chart}" legendItemClass="com.skin.PolarLegendItem"/> </mx:Panel> <mx:Panel title="Column Chart" height="100%" width="100%"> <mx:ColumnChart id="column" height="100%" width="45%" paddingLeft="5" paddingRight="5" showDataTips="true" dataProvider="{medalsAC}" > <mx:horizontalAxis> <mx:CategoryAxis categoryField="Country"/> </mx:horizontalAxis> <mx:series> <mx:ColumnSeries xField="Country" yField="Gold" displayName="Gold" /> <mx:ColumnSeries xField="Country" yField="Silver" displayName="Silver" /> <mx:ColumnSeries xField="Country" yField="Bronze" displayName="Bronze" /> </mx:series> </mx:ColumnChart> <mx:Legend dataProvider="{column}" legendItemClass="com.skin.CartesianLegendItem"/> </mx:Panel> </mx:VDividedBox> </s:Application>CartesianLegendItem:
package com.skin { import flash.display.DisplayObject; import flash.events.Event; import flash.events.MouseEvent; import mx.charts.LegendItem; import mx.charts.chartClasses.ChartElement; import mx.charts.chartClasses.GraphicsUtilities; import mx.charts.chartClasses.StackedSeries; import mx.charts.renderers.BoxItemRenderer; import mx.charts.series.ColumnSeries; import mx.charts.series.LineSeries; import mx.charts.series.PieSeries; import mx.controls.ColorPicker; import mx.core.IDataRenderer; import mx.core.IFlexDisplayObject; import mx.core.IInvalidating; import mx.core.UIComponent; import mx.events.DropdownEvent; import mx.graphics.IFill; import mx.graphics.SolidColor; import mx.graphics.SolidColorStroke; import mx.graphics.Stroke; import mx.skins.ProgrammaticSkin; import mx.utils.ColorUtil; public class CartesianLegendItem extends LegendItem { public function CartesianLegendItem() { super(); this.buttonMode = true; this.mouseChildren = false; this.addEventListener(MouseEvent.CLICK,selecteLegend,false,0,true); } private function selecteLegend(e:MouseEvent):void { if(e.target is LegendItem) { var cp:ColorPicker = new ColorPicker(); this.addChild(cp); cp.selectedColor = (element as UIComponent).getStyle("fill").color;//element 负责生成此图例项目的图表元素。 cp.addEventListener(DropdownEvent.CLOSE, changeItemColor,false,0,true); cp.x = e.localX; cp.y = e.localY; cp.width = 0; cp.height = 0; cp.open(); } } private function changeItemColor(e:DropdownEvent):void { var solidColor:SolidColor = (element as UIComponent).getStyle("fill") as SolidColor; if (solidColor != null) { solidColor.color = e.target.selectedColor; } (element as UIComponent).setStyle("fill",solidColor); var stroke:SolidColorStroke = (element as UIComponent).getStyle("stroke"); if (stroke != null) { stroke.color = e.target.selectedColor; } (element as UIComponent).setStyle("stroke",stroke); e.target.removeEventListener(DropdownEvent.CLOSE, changeItemColor,false); this.removeChild(e.target as DisplayObject); (this.marker as IInvalidating).invalidateDisplayList(); (element as UIComponent).invalidateDisplayList(); this.invalidateDisplayList(); } } }PolarLegendItem:
package com.skin { import flash.display.DisplayObject; import flash.events.Event; import flash.events.MouseEvent; import mx.charts.LegendItem; import mx.charts.chartClasses.ChartElement; import mx.charts.chartClasses.GraphicsUtilities; import mx.charts.chartClasses.StackedSeries; import mx.charts.renderers.BoxItemRenderer; import mx.charts.series.ColumnSeries; import mx.charts.series.LineSeries; import mx.charts.series.PieSeries; import mx.controls.ColorPicker; import mx.core.IDataRenderer; import mx.core.IFlexDisplayObject; import mx.core.IInvalidating; import mx.core.UIComponent; import mx.events.DropdownEvent; import mx.graphics.IFill; import mx.graphics.SolidColor; import mx.graphics.SolidColorStroke; import mx.graphics.Stroke; import mx.skins.ProgrammaticSkin; import mx.utils.ColorUtil; public class PolarLegendItem extends LegendItem { public function PolarLegendItem() { super(); this.buttonMode = true; this.mouseChildren = false; this.addEventListener(MouseEvent.CLICK,selecteLegend,false,0,true); } private function selecteLegend(e:MouseEvent):void { if(e.target is LegendItem) { var cp:ColorPicker = new ColorPicker(); this.addChild(cp); cp.selectedColor = (marker as IDataRenderer).data.fill.color; /*marker 此图例项目所显示的标记。因为对于PieChart来说,chart中每一块其实是一个PieSeries生产的,所以如果你 用element来取值的话,你会发现每次element都是同样的。 */ cp.addEventListener(DropdownEvent.CLOSE, changeItemColor,false,0,true); cp.x = e.localX; cp.y = e.localY; cp.width = 0; cp.height = 0; cp.open(); } } private function changeItemColor(e:DropdownEvent):void { var solidColor:SolidColor = (marker as IDataRenderer).data.fill as SolidColor; if (solidColor != null) { solidColor.color = e.target.selectedColor; } e.target.removeEventListener(DropdownEvent.CLOSE, changeItemColor,false); this.removeChild(e.target as DisplayObject); (marker as IInvalidating).invalidateDisplayList(); (element as IInvalidating).invalidateDisplayList(); this.invalidateDisplayList(); } } }
相关推荐
4. **事件处理**:ActionScript和Flex提供了丰富的事件处理机制,使得用户与3D图表的交互变得可能,比如点击图表元素时触发特定操作。 5. **自定义样式和主题**:开发者可以通过自定义皮肤和样式来改变图表的颜色、...
3. 自定义样式:利用CSS样式表,可以改变图表的颜色、边框、背景等视觉元素,使其符合设计规范。 4. 图例:添加图例以标识不同数据系列,提高图表的可读性。 5. 分组和堆叠:对于多组数据,可以使用分组或堆叠的方式...
6. **样式和模板**:Flex Chart允许开发者通过CSS或MXML定义样式,自定义图表的颜色、边框、背景等外观,甚至可以创建自定义模板以改变图表的布局和行为。 7. **动画效果**:可以为图表添加平滑的动画效果,提高用户...
标题 "flex chart" 指的是使用 Adobe Flex 技术创建的数据图表组件。Flex 是一个开源框架,主要用于构建富互联网应用程序(RIA),特别是在基于 Adobe Flash Player 或 Adobe AIR 的平台上。Flex Chart 是 Flex SDK ...
Flex Chart Line是Adobe Flex框架中的一个关键组件,用于创建数据可视化图表,特别是线性图表。在本场景中,我们关注的是“单线”和“双线”两种类型的线性图表。Flex 4.5是Adobe Flex SDK的一个版本,它提供了更...
FlexChart是Adobe Flex框架中的一个图表组件,用于创建各种数据可视化图表。在描述中提到的“FlexChart平均线代码”是指使用FlexChart来绘制平均线图表的源代码。这个平均线可能指的是移动平均线,一种在金融数据...
在Flex开发中,LineChart是一种常用的图表组件,用于展示数据趋势。Datatips是LineChart中的一个重要特性,它会在鼠标悬停在数据点上时显示相关信息。本篇将详细介绍如何改变Flex LineChart的Datatips显示样式,包括...
在使用Flex Builder创建图表(Chart)的过程中,很多开发者会遇到一个普遍的问题:如何有效地去除试用版中的水印。Flex Builder作为Adobe推出的一款功能强大的开发工具,被广泛应用于创建富互联网应用(RIA)。然而,...
Delphi7.0源码生成一个柱状图表chart,使用了ntdll.dll,这个直方图表效果如图所示。使用了第三方控件实现的图表制作生成软件,功能比较强大。以下是图表测试源代码: Chart := TChart.Create(nil); try Chart...
标题中的“Flex Chart+WebService”指的是使用Adobe Flex技术来创建图表,并通过Web Service与服务器进行数据交互的一个示例项目。Flex是一种基于ActionScript 3.0的开源框架,用于构建富互联网应用程序(RIA)。它...
FlexChart不仅提供了丰富的图表类型,还支持高度定制化的样式设置,使得开发者能够轻松地创建出美观且交互性强的图表应用。无论是用于数据分析还是数据可视化,FlexChart都是一个值得推荐的选择。
3. **事件处理**:为了增加交互性,源码可能包含了事件监听器,例如点击图表元素后触发某些动作,或者通过鼠标悬停显示更多数据信息。 4. **样式和主题**:Flex允许开发者自定义组件的外观。源码可能展示了如何使用...
2. **Chart组件**:在Flex中,使用`mx.charts.Chart`(Halo)或`s.spark.components.Chart`(Spark)作为图表容器。你可以设置其属性,如背景颜色、标题、图例等。 3. **Series**:柱状图通常由一个或多个Series...
Flex Chart Demo是一个示例项目,展示了如何在Flex环境中利用图表组件进行数据可视化。Flex是Adobe开发的一款用于构建富互联网应用程序(RIA)的框架,而Flex Builder是它的集成开发环境(IDE),提供了图形化的用户...
- Flex 4的Chart控件提供了丰富的样式和主题选项,可以自定义颜色、线条样式、填充效果等,以满足设计需求。 - 用户还可以定制图表的轴、网格线、图例、标题等元素的样式。 4. **交互性**: - 图表支持用户交互...
本人这段时间在学习flex 自己写的一些成功案例 包括lineChart BarChart bubbleChart pieChart等图表.这些图表都能显示从java后台传入的数据 保证可以运行 好资源所以分数有点高,望大家鼎力支持.
Flex Chart Explorer是一个基于Adobe Flex技术的图表探索工具,它提供了丰富的可视化能力,帮助开发者和数据分析师创建和定制各种图表类型,如线图、柱状图、饼图等。Flex是Adobe开发的一种开源框架,用于构建富...
标题中的“Flex_4系统组件:图表”指的是Adobe Flex 4框架中用于创建数据可视化的图表组件。这些组件是Flex SDK的一部分,允许开发者构建交互式的、动态的数据展示应用。Flex 4引入了全新的图形渲染引擎(称为Spark...
chart.rar--java+flex图表 Flex3高级图表开发指南.pdf--英文的 Flex+白皮书.pdf flex-demo.rar Flex入门培训资料及PPT.rar flex中文帮助.pdf InfoQ Flex与JSON及XML的互操作.mht 结合java做的flex图表例子 - 点点...
在Flex中,可以使用mx.charts.LineChart类来创建线图,通过设置series属性添加数据系列,利用dataProvider绑定数据源,还可以自定义轴刻度、图例、颜色等视觉元素。 柱状图则常用于比较不同类别的数据量。Flex中的...