FLEX实践—Error #1009 when use LinearAxis

本文介绍了一个Flex应用中切换状态导致的TypeError错误,并提供了解决方案。通过自定义图表标题渲染器并调整MXML配置,成功解决了图表显示的问题。

问题描述:
FLEX应用中有三个states,通过下拉列表切换state,三个state中显示的控件分别为:datagrid,chart,datagrid/chart;
当由只显示表格的视图切换到只显示图表的视图时,出现以下的错误:
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
 at mx.charts.chartClasses::ChartLabel/updateDisplayList()[C:/work/flex/dmv_automation/projects/datavisualisation/src/mx/charts/chartClasses/ChartLabel.as:262]
 at mx.core::UIComponent/validateDisplayList()[C:/autobuild/3.2.0/frameworks/projects/framework/src/mx/core/UIComponent.as:6351]
 at mx.managers::LayoutManager/validateDisplayList()[C:/autobuild/3.2.0/frameworks/projects/framework/src/mx/managers/LayoutManager.as:622]
 at mx.managers::LayoutManager/doPhasedInstantiation()[C:/autobuild/3.2.0/frameworks/projects/framework/src/mx/managers/LayoutManager.as:695]
 at Function/http://adobe.com/AS3/2006/builtin::apply()
 at mx.core::UIComponent/callLaterDispatcher2()[C:/autobuild/3.2.0/frameworks/projects/framework/src/mx/core/UIComponent.as:8628]
 at mx.core::UIComponent/callLaterDispatcher()[C:/autobuild/3.2.0/frameworks/projects/framework/src/mx/core/UIComponent.as:8568]
 at flash.utils::Timer/_timerDispatch()
 at flash.utils::Timer/tick()

 

上网搜了一下,发现问题出在<mx:LinearAxis title="平均耗时"/>上
FLEX BUG描述请参考:https://bugs.adobe.com/jira/browse/FLEXDMV-2088
根据BUG ISSUE提供的解决方案,我采用了以下的方法:
创建 CustomerChartTitleRenderer
package mx.controls.extend.chart
{
 import mx.charts.chartClasses.ChartLabel;
    import mx.core.IDataRenderer;

 public class CustomerChartTitleRenderer extends ChartLabel implements IDataRenderer
 {
  public function CustomerChartTitleRenderer()
  {
  }
        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
           if (parent == null){
               return;
           }
           super.updateDisplayList(unscaledWidth, unscaledHeight);
     }
     }
}

 

将mxml中

<mx:verticalAxis>
         <mx:LinearAxis title="平均耗时"/>

 </mx:verticalAxis>

修改为
<mx:verticalAxisRenderers>
          <mx:AxisRenderer titleRenderer="mx.controls.extend.chart.CustomerChartTitleRenderer"> 
                   <mx:axis> 
                            <mx:LinearAxis title="平均耗时"/>
                   </mx:axis> 
           </mx:AxisRenderer> 

  </mx:verticalAxisRenderers>

 

问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值