Flex的模块加载图表控件出现Error #1009解决之道

http://godlewis.iteye.com/blog/1983968

在做ColumnChart时,发现总出现如下异常: 

Java代码   收藏代码
  1. 1009 - Error #1009: Cannot access a property or method of a null object reference.  
  2. TypeError: Error #1009: Cannot access a property or method of a null object reference.  
  3. at mx.charts.chartClasses::ChartBase/initStyles()  
  4. at mx.charts.chartClasses::ChartBase/set moduleFactory()  
  5. at mx.charts.chartClasses::CartesianChart/set moduleFactory()  
  6. at mx.charts::ColumnChart/set moduleFactory()  

这个问题找了很久才发现只是在模块中包含该图表控件时才出现,经查ChartBase源代码发现是1862行出的错(sdk4.6),
Java代码   收藏代码
  1. var chartBaseStyle:CSSStyleDeclaration = styleManager.getStyleDeclaration("mx.charts.chartClasses.ChartBase");  
取得chartBaseStyle为空。 
此问题解决办法是,在模块主程序(Module的那个mxml)中覆盖如下方法: 
Java代码   收藏代码
  1. override public function get moduleFactory():IFlexModuleFactory {  
  2.      return mx.core.FlexGlobals.topLevelApplication.moduleFactory;  
  3. }  


另外,如果如果主应用加载的模块里的图表chart的DataTip显示颜色有问题,需要在主应用(包含ModuleLoader的那个application)中预先加载下用到的Chart类,比如LineChart: 
Java代码   收藏代码
  1. private var temp:LineChart=null;//预先加载一下linechart类,解决chart的DataTip显示颜色的flex4bug  


如果在该模块中用其他spark控件使用时出现皮肤丢失问题,方便起见,可以在应用编译时增加 -keep-all-type-selectors=true参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值