1、错误原因
TypeError: Error #1006: value 不是函数。
at BasicChart/dataFunc()[E:Flash BuilderMapsrcBasicChart.mxml:68]
at mx.charts.chartClasses::Series/cacheDefaultValues()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartschartClassesSeries.as:1260]
at mx.charts.series::LineSeries/updateData()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartsseriesLineSeries.as:1188]
at mx.charts.chartClasses::Series/validateData()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartschartClassesSeries.as:1950]
at mx.charts.series::LineSeries/describeData()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartsseriesLineSeries.as:1273]
at mx.charts.chartClasses::DataTransform/describeData()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartschartClassesDataTransform.as:282]
at mx.charts.chartClasses::AxisBase/describeData()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartschartClassesAxisBase.as:238]
at mx.charts.chartClasses::NumericAxis/get dataDescriptions()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartschartClassesNumericAxis.as:1264]
at mx.charts.chartClasses::NumericAxis/autoGenerate()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartschartClassesNumericAxis.as:1281]
at mx.charts.chartClasses::NumericAxis/updateCache()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartschartClassesNumericAxis.as:974]
at mx.charts.chartClasses::NumericAxis/update()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartschartClassesNumericAxis.as:1108]
at mx.charts.chartClasses::NumericAxis/getLabelEstimate()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartschartClassesNumericAxis.as:833]
at mx.charts::AxisRenderer/measureLabels()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartsAxisRenderer.as:2056]
at mx.charts::AxisRenderer/calcRotationAndSpacing()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartsAxisRenderer.as:1701]
at mx.charts::AxisRenderer/adjustGutters()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartsAxisRenderer.as:1565]
at mx.charts.chartClasses::CartesianChart/updateAxisLayout()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartschartClassesCartesianChart.as:2182]
at mx.charts.chartClasses::CartesianChart/updateDisplayList()[E:dev4.0.0frameworksprojectsdatavisualizationsrcmxchartschartClassesCartesianChart.as:1391]
at mx.core::UIComponent/validateDisplayList()[E:dev4.0.0frameworksprojectsframeworksrcmxcoreUIComponent.as:8531]
at mx.managers::LayoutManager/validateDisplayList()[E:dev4.0.0frameworksprojectsframeworksrcmxmanagersLayoutManager.as:663]
at mx.managers::LayoutManager/doPhasedInstantiation()[E:dev4.0.0frameworksprojectsframeworksrcmxmanagersLayoutManager.as:718]
at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:dev4.0.0frameworksprojectsframeworksrcmxmanagersLayoutManager.as:1072]
2、错误原因
<?xml version="1.0" encoding="utf-8"?>
<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"
width="100%" height="100%" fontSize="12"
fontFamily="微软雅黑">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import mx.charts.ChartItem;
import mx.charts.chartClasses.IAxis;
import mx.charts.chartClasses.Series;
import mx.charts.series.items.LineSeriesItem;
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
import mx.graphics.Stroke;
[Bindable]
//折线图数据绑定
private var lineArray:ArrayCollection = new ArrayCollection([
{seasons:"春季",rate:"0.48677"},
{seasons:"夏季",rate:"0.122343232"},
{seasons:"秋季",rate:"0.5657645"},
{seasons:"冬季",rate:"0.67484889"}
]);
/**
* 设置折线图中比率的位数
*/
public function myDataFunction(series:Series, item:Object, fieldName:String):Object
{
var temp:Number = item.rate;
var number:String = formatter.format(temp);
return number;
}
public function myFillFunction(item:ChartItem, index:Number):String
{
var curItem:LineSeriesItem = LineSeriesItem(item);
var num:String = formatter.format(curItem.yNumber);
return num;
}
public function myFilterFunction(item:Object):String
{
var temp:Number = item.rate;
var number:String = formatter.format(temp);
return number;
}
public function myDataFunction1(series:Series, item:Object, fieldName:String):Object
{
if (fieldName == 'yValue')
return(formatter.format(item.rate));
else if (fieldName == "xValue")
return(formatter.format(item.seasons));
else
return null;
}
private function dataFunc(series:LineSeries,item:Object,fieldName:String):String
{
var df:NumberFormatter = new NumberFormatter();
df.precision = "2";
df.rounding = "up";
var temp:Number = Number(item.rate.toFixed(2));
return df.format(temp);
}
private function linearAxis_labelFunc(item:Object, prevValue:Object, axis:IAxis):String
{
return formatter.format(item);
}
]]>
</fx:Script>
<fx:Declarations>
<mx:NumberFormatter id="formatter" precision="2" rounding="up"/>
</fx:Declarations>
<mx:VBox width="100%" height="100%" paddingBottom="10" paddingLeft="10" paddingRight="15"
paddingTop="10" horizontalAlign="center">
<mx:LineChart id="line" width="100%" height="90%" dataProvider="{lineArray}" showDataTips="true">
<mx:horizontalAxis>
<mx:CategoryAxis categoryField="seasons" displayName="四季"/>
</mx:horizontalAxis>
<mx:horizontalAxisRenderers>
<mx:AxisRenderer placement="bottom" tickLength="1" tickStroke="{new Stroke(0xFF0000,1)}"
axisStroke="{new Stroke(0xFF0000,1)}">
<mx:axis>
<mx:LinearAxis id="bottomAxis"/>
</mx:axis>
</mx:AxisRenderer>
</mx:horizontalAxisRenderers>
<mx:verticalAxisRenderers>
<mx:AxisRenderer placement="left" tickLength="1" tickStroke="{new Stroke(0xFF0000,1)}"
axisStroke="{new Stroke(0xFF0000,1)}">
<mx:axis>
<mx:LinearAxis id="leftAxis"/>
</mx:axis>
</mx:AxisRenderer>
</mx:verticalAxisRenderers>
<mx:series>
<mx:LineSeries verticalAxis="{leftAxis}" displayName="比率" xField="seasons" yField="rate"
dataFunction="dataFunc"/>
</mx:series>
<mx:filters>
<fx:Array/>
</mx:filters>
</mx:LineChart>
<mx:Legend dataProvider="{line}"/>
</mx:VBox>
</s:Application>
3、解决办法