现在的位置: 首页 > 综合 > 正文

flex 4.6SDK arcgis flex viewer工程中在viewer窗体中直接添加图表就报错-错误详细信息

2013年08月19日 ⁄ 综合 ⁄ 共 6095字 ⁄ 字号 评论关闭

TypeError: Error #1009: 无法访问空对象引用的属性或方法。
 at mx.charts.chartClasses::ChartBase/initStyles()
 at mx.charts.chartClasses::ChartBase/set moduleFactory()
 at mx.charts.chartClasses::CartesianChart/set moduleFactory()
 at mx.charts::ColumnChart/set moduleFactory()
 at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::addingChild()
 at mx.core::Container/http://www.adobe.com/2006/flex/mx/internal::addingChild()
 at mx.core::Container/addChildAt()
 at mx.core::Container/addChild()
 at mx.core::Container/createComponentFromDescriptor()
 at mx.core::Container/createComponentsFromDescriptors()
 at mx.core::Container/createChildren()
 at mx.core::UIComponent/initialize()
 at mx.core::Container/initialize()
 at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::childAdded()
 at mx.core::Container/http://www.adobe.com/2006/flex/mx/internal::childAdded()
 at mx.core::Container/addChildAt()
 at mx.core::Container/addChild()
 at mx.core::Container/createComponentFromDescriptor()
 at mx.core::Container/createComponentsFromDescriptors()
 at mx.core::Container/createChildren()
 at mx.core::UIComponent/initialize()
 at mx.core::Container/initialize()
 at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::childAdded()
 at mx.core::UIComponent/addChildAt()
 at spark.components::Group/addDisplayObjectToDisplayList()
 at spark.components::Group/http://www.adobe.com/2006/flex/mx/internal::elementAdded()
 at spark.components::Group/setMXMLContent()
 at spark.components::Group/set mxmlContent()
 at spark.components::SkinnableContainer/set mxmlContent()
 at spark.components::SkinnableContainer/createDeferredContent()
 at spark.components::SkinnableContainer/createContentIfNeeded()
 at spark.components::SkinnableContainer/createChildren()
 at mx.core::UIComponent/initialize()
 at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::childAdded()
 at mx.core::Container/http://www.adobe.com/2006/flex/mx/internal::childAdded()
 at mx.core::Container/addChildAt()
 at mx.core::Container/addChild()
 at mx.core::Container/createComponentFromDescriptor()
 at mx.core::Container/createComponentsFromDescriptors()
 at mx.core::Container/createChildren()
 at mx.core::UIComponent/initialize()
 at mx.core::Container/initialize()
 at widgets.PerformanceIndicators::PerformanceIndicatorsWidget/initialize()
 at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::childAdded()
 at mx.core::UIComponent/addChildAt()
 at spark.components::Group/addDisplayObjectToDisplayList()
 at spark.components::Group/http://www.adobe.com/2006/flex/mx/internal::elementAdded()
 at spark.components::Group/addElementAt()
 at spark.components::Group/addElement()
 at widgets.WidgetContainer::WidgetContainer/addWidget()[D:\天津出差\环境局\project\HJ20130407\src\widgets\WidgetContainer\WidgetContainer.mxml:147]
 at widgets.WidgetContainer::WidgetContainer/addElement()[D:\天津出差\环境局\project\HJ20130407\src\widgets\WidgetContainer\WidgetContainer.mxml:130]
 at widgets.WidgetContainer::WidgetContainerWidget/addWidget()[D:\天津出差\环境局\project\HJ20130407\src\widgets\WidgetContainer\WidgetContainerWidget.mxml:55]
 at com.esri.viewer.managers::WidgetManager/openWidget()[D:\天津出差\环境局\project\HJ20130407\src\com\esri\viewer\managers\WidgetManager.mxml:1109]
 at com.esri.viewer.managers::WidgetManager/runWidget()[D:\天津出差\环境局\project\HJ20130407\src\com\esri\viewer\managers\WidgetManager.mxml:1134]
 at com.esri.viewer.managers::WidgetManager/widgetReadyHandler()[D:\天津出差\环境局\project\HJ20130407\src\com\esri\viewer\managers\WidgetManager.mxml:1201]
 at flash.events::EventDispatcher/dispatchEventFunction()
 at flash.events::EventDispatcher/dispatchEvent()
 at ModuleInfoProxy/moduleEventHandler()
 at flash.events::EventDispatcher/dispatchEventFunction()
 at flash.events::EventDispatcher/dispatchEvent()
 at ModuleInfo/readyHandler()
 at flash.events::EventDispatcher/dispatchEventFunction()
 at flash.events::EventDispatcher/dispatchEvent()
 at mx.core::FlexModuleFactory/update()

倒是有一个相关的帖子:

http://forums.adobe.com/message/4143789 说明了原因

http://hi.baidu.com/haoqionghaozi/item/14166d3e358bbd1c9dc65e37 有解决方法

==============================================

解决方法示例:

在使用图表控件的模块中添加事件

<viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009"
       xmlns:s="library://ns.adobe.com/flex/spark"
       xmlns:mx="library://ns.adobe.com/flex/mx"
       xmlns:viewer="com.esri.viewer.*"
       xmlns:components="com.esri.viewer.components.*"
       xmlns:esri="http://www.esri.com/2008/ags"       
       preinitialize="basewidget_preinitializeHandler(event)"

响应事件的函数代码:

private function basewidget_preinitializeHandler(event:FlexEvent):void
   {
    // work-around for 4.6 regression
    copyStyleFromParent("mx.charts.chartClasses.ChartBase");
    copyStyleFromParent("mx.charts.chartClasses.CartesianChart");
    copyStyleFromParent("mx.charts.chartClasses.PolarChart");
    copyStyleFromParent("mx.charts.BarChart");
    copyStyleFromParent("mx.charts.ColumnChart");
    copyStyleFromParent("mx.charts.LineChart");
    copyStyleFromParent("mx.charts.PieChart");
    copyStyleFromParent("mx.charts.AxisRenderer");
    copyStyleFromParent(".blockCategoryAxis");
    copyStyleFromParent(".blockNumericAxis");
    copyStyleFromParent(".linedNumericAxis");
    copyStyleFromParent(".dashedNumericAxis");
    copyStyleFromParent(".dashedCategoryAxis");
    copyStyleFromParent(".hangingCategoryAxis");
    copyStyleFromParent("mx.charts.GridLines");
    copyStyleFromParent(".horizontalGridLines");
    copyStyleFromParent("mx.charts.series.BarSeries");
    copyStyleFromParent("mx.charts.series.ColumnSeries");
    copyStyleFromParent("mx.charts.series.LineSeries");
    copyStyleFromParent("mx.charts.series.PieSeries");
   }
   
   private function copyStyleFromParent(selector:String):void
   {
    var chartBaseStyle:CSSStyleDeclaration = styleManager.getStyleDeclaration(selector);
    if (!chartBaseStyle && styleManager.parent)
    {
     var parentStyle:CSSStyleDeclaration = styleManager.parent.getStyleDeclaration(selector);
     if (parentStyle)
     {
      styleManager.setStyleDeclaration(selector, parentStyle, false);
     }
    }
    
   }

 

***************************************************

*      路过的请留下见解和问题描述,相互交流学习。

****************************************************

抱歉!评论已关闭.