円グラフ

パイごとにクリックしたら、くっついたり離れたりするのができた。

他の人には簡単なものなんだろうけど、できてなんかうれしいから載っけとく。


<?xml version="1.0"?>
<!-- charts/ExplodingPiePerWedge.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ns1="*">
  <mx:Script><![CDATA[
  	import mx.events.IndexChangedEvent;
	import mx.charts.series.items.PieSeriesItem;
	import mx.charts.events.ChartItemEvent;
	import mx.collections.ArrayCollection;
	[Bindable]
	public var expenses:ArrayCollection = new ArrayCollection([
		{Expense:"Taxes", Amount:2000},
		{Expense:"Rent", Amount:1000},
		{Expense:"Bills", Amount:100},
		{Expense:"Car", Amount:450},
		{Expense:"Gas", Amount:100},
		{Expense:"Food", Amount:200}
	]);



	private var stateArray:Array = new Array();

    public function itemClickPie(clickEvent:ChartItemEvent):void{
		var item:PieSeriesItem = clickEvent.hitData.chartItem as PieSeriesItem;
		var array:Array = new Array();
		var tmpIndex:int;

		for(var i:int = 0;i < piechar.dataProvider.length;i++){
			if(item.index == i){
				if(stateArray[item.index] =="pop"){
					array.push(0);
					stateArray[item.index] = "close";
				}else{
					array.push(0.1);
					stateArray[item.index] = "pop";
				}
			}else{
				if(stateArray[i] =="close"){
					array.push(0);
					stateArray[i] = "close";
				}else if(stateArray[i] =="pop"){
					array.push(0.1);
					stateArray[i] = "pop";
				}else{
					array.push(0);
				}
			}
		}
		sel.perWedgeExplodeRadius = array;
    }


  ]]></mx:Script>
  <mx:Panel title="Exploding Pie Chart Per Wedge">
     <mx:PieChart id="piechar"
        dataProvider="{expenses}"
        showDataTips="true"
    	itemClick="itemClickPie(event);"
     >
        <mx:series>
           <!--Apply the Array of radii to the PieSeries.-->
           <mx:PieSeries id="sel"
                field="Amount"
                nameField="Expense"
                fontSize="80" textAlign="center" labelPosition="inside"
           />
        </mx:series>
     </mx:PieChart>
     <mx:Legend dataProvider="{piechar}"/>
  </mx:Panel>
</mx:Application>