首页 > 其他分享 >FLEX实践—PieChart综合应用(颜色渐变、显示选中值、选中部分突出、数据钻探等)

FLEX实践—PieChart综合应用(颜色渐变、显示选中值、选中部分突出、数据钻探等)

时间:2023-05-26 12:03:43浏览次数:36  
标签:FLEX 效果 代码 注释 钻探 PieChart 选中


代码如下:(代码中附加了注释,每一种方法对应的效果均有注释)

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
				layout="absolute"
				creationComplete="init()">

	<mx:Script>
		<!--[CDATA[
		    import mx.graphics.IFill;
			import mx.graphics.SolidColor;		
			import mx.charts.ChartItem;
			import mx.charts.events.ChartItemEvent;
			import mx.charts.series.items.PieSeriesItem;
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;			
			import mx.utils.StringUtil;
			
			[Bindable]
			var currentProvider:Array=dataProvider;
			[Bindable]
			var drillProvider:Array;
			[Bindable]
			var dataProvider:Array=pieProvider;

			private function init():void
			{
				dataProvider=pieProvider;
				currentProvider=dataProvider;
			}
            //按指定格式显示每一块的内容
			private function pieSeries_labelFunc(item:Object, field:String, index:Number, percentValue:Number):String
			{
				return StringUtil.substitute("{0} ({1}%)", item.name, percentValue.toFixed(1));
			}

			//设置PieChart颜色渐变
			private function pieSeries_fillFunc(item:ChartItem, index:Number):IFill
			{
				var curItem:PieSeriesItem=PieSeriesItem(item);
				/* Convert to a number between 0 and 1. */
				var pct:Number=curItem.percentValue / 100;
				return new SolidColor(0xF8FF7F / pct, 1.0);
			}

			//显示选中对象的name属性值并弹出选中部分
			private function showDetail(evt:ChartItemEvent):void
			{
				var psi:PieSeriesItem=evt.hitData.chartItem as PieSeriesItem;
				/*设置选中的部分弹出显示*/
				var arr:Array = []; 
                arr[evt.hitData.chartItem.index] = 0.2; 
                pieSeries.perWedgeExplodeRadius = arr; 
				//显示选中项的name属性值
				Alert.show(psi.item.name);
			}

			//点击具体位置时进入下一层数据显示,若已经在具体数据状态下则切换回原始数据状态
			private function drillIt(event:ChartItemEvent):void
			{
				if (currentProvider == dataProvider)
				{
					drillProvider=pieDetailProvider;
					pieSeries.field="dData";
					pieSeries.labelField="name";
					pieSeries.nameField="name";

					currentProvider=drillProvider;
				}
				else
				{
					pieSeries.field="data";
					pieSeries.labelField="name";
					pieSeries.nameField="name";

					currentProvider=dataProvider;
				}
			}
		]]-->
	</mx:Script>

	<mx:Array id="pieProvider">
		<mx:Object name="Apple"
				   data="200"/>
		<mx:Object name="Banana"
				   data="500"/>
		<mx:Object name="Pear"
				   data="700"/>
		<mx:Object name="Orange"
				   data="100"/>
	</mx:Array>

	<mx:Array id="pieDetailProvider">
		<mx:Object name="East"
				   dData="22"/>
		<mx:Object name="West"
				   dData="38"/>
		<mx:Object name="South"
				   dData="30"/>
		<mx:Object name="West"
				   dData="10"/>
	</mx:Array>
    
    <!-- 饼图数据源变化时的效果 -->
	<mx:SeriesZoom id="zoomIn"
				   duration="500"
				   verticalFocus="bottom"/>
	<mx:SeriesSlide id="zoomOut"
					duration="500"
					direction="left"/>

	<mx:Panel styleName="opaquePanel"
			  width="100%"
			  height="100%">
		<mx:PieChart id="pieChart"
					 dataProvider="{currentProvider}"
					 showDataTips="true"
					 height="100%"
					 width="100%"
					 itemClick="drillIt(event)"
					 innerRadius="0.2">
			<mx:series>
				<mx:PieSeries id="pieSeries"
							  field="data"
							  nameField="name"
							  labelPosition="callout"
							  labelFunction="pieSeries_labelFunc"
							  fillFunction="pieSeries_fillFunc"
							  showDataEffect="zoomIn"
							  hideDataEffect="zoomOut"
							  explodeRadius="0.05"/>
			</mx:series>
		</mx:PieChart>
		<mx:ControlBar width="100%">
			<mx:Legend dataProvider="{pieChart}"
					   direction="horizontal"
					   horizontalGap="100"
					   width="100%"/>
		</mx:ControlBar>
	</mx:Panel>

</mx:Application>

 

 

演示效果:

 

FLEX实践—PieChart综合应用(颜色渐变、显示选中值、选中部分突出、数据钻探等)_application

 

 数据钻探效果:

FLEX实践—PieChart综合应用(颜色渐变、显示选中值、选中部分突出、数据钻探等)_object_02

 

 

标签:FLEX,效果,代码,注释,钻探,PieChart,选中
From: https://blog.51cto.com/u_16129500/6354854

相关文章

  • FLEX AIR实践—删除ApplicationDirectory目录下文件
    AIR的文件目录类型有以下几种:File.userDirectory                                //指向用户文件夹File.documentsDirectory                      //指向用户文档文件夹File.desktopDirectory           ......
  • FLEX AIR实践—FLEX AIR XML Encode Bug
     这几天在用AIR程序通过WebService进行数据传输时发现了以下问题:用WebService传输‘A&B’内容到目的地,再从目的地将数据通过WebService获取到本地,结果数据变成了'A&amp;B';于是开始进行以下测试:将'A&B'替换成'A&amp;B'——>获取结果为'A&amp;amp;B'测试了其他转义字符也得到了同样......
  • FLEX实践—XML HttpService加载错误
    主应用代码:<?xmlversion="1.0"encoding="utf-8"?><mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="center" verticalAlign="middle" creationComplete="init......
  • FLEX SharedObject介绍及应用
    以下内容是对网上一些资料的总结FlexSharedObject介绍(Flash的本地共享对象是在用户机器上实现持久化存储的数据集合。Flash可以从程序中控制这些数据集合,向其中存入或者从中读取大量的信息数据。使用SharedObject对象对象说明:SharedObject(共享对象)可以看作是小型的数据库,我......
  • FLEX实践—自动发送邮件
    代码:<?xmlversion="1.0"encoding="utf-8"?><mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"><mx:Script><!--[CDATA[importflash.net.navigateToUR......
  • FLEX实践—控件内容与String显示区别
     在解释这个区别之前先来看一段示例:<?xmlversion="1.0"encoding="utf-8"?><mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"><mx:Script><!--[CDATA[i......
  • FLEX实践—计算指定日期是当年/当月第几周
    计算指定日期是当月第几周:privatefunctionweekOfMonth(yyyy:Number,mm:Number,dd:Number):Number { varmyDate=newDate(yyyy,mm-1,dd); vardiff=myDate.getDate()-1; myDate.setDate(1); vardateWeek=7-myDate.getDay(); if(diff>date......
  • FLEX实践—加载XML文件错误
        这两天在研究一个FLEX小相册,准备做一个超级简单的纯FLEX相册,没想到在读取XML文件的时候遇到了这样一个问题:    1)用FLEXBUILDER创建了一个FLEX工程    2)写了一个MXML文件,一个XML文件    3)在程序中用HTTPService和URLRequest两种方法分别读取XML文件内容 ......
  • FLEX实践—获取当前窗口大小
       在FLEX中获取当前窗口的长度与宽度使用下面的方法:   Application.application.width   Application.application.height    在设置弹出窗口的长与宽的时候可以根据比例来设置,而不用将其长与宽设置为固定值。这样做的好处是考虑到了IE窗口的大小,通过比例设置可......
  • RUBY-FLEX实践—利用swfobject在RUBY工程中加载SWF
    开发环境:Ruby:Ruby1.9.1Rails:Rails2.3.5IDE:RubyMine2.0.1FlexBuilder:FlexBuilder4 开发思路:1)在FlexBuilder中创建Flex工程2)在RubyMine中创建Rails工程3)将Flex工程bin-debug下编译的swfobject.js拷贝至Ruby工程指定位置4)引用Flex工程编译后的html中的内容实现在Rails页面中嵌......