Apache flex 错误#2025:提供的DisplayObject必须是调用者的子对象
我对FLEX编程非常陌生。我继承了一个Flex4项目,该项目调用web服务向最终用户显示数据 我的默认包有一个.MXML文件,其中包含对登录屏幕(另一个.MXML文件)和主屏幕(是的,另一个.MXML文件)的组件引用 登录过程工作正常。我有3个选项卡,现在我正在添加第4个选项卡 选项卡是使用TabNavigator中的元素创建的。我添加了第四个VBOX,如下所示:Apache flex 错误#2025:提供的DisplayObject必须是调用者的子对象,apache-flex,flex4,flexbuilder,flash-builder,Apache Flex,Flex4,Flexbuilder,Flash Builder,我对FLEX编程非常陌生。我继承了一个Flex4项目,该项目调用web服务向最终用户显示数据 我的默认包有一个.MXML文件,其中包含对登录屏幕(另一个.MXML文件)和主屏幕(是的,另一个.MXML文件)的组件引用 登录过程工作正常。我有3个选项卡,现在我正在添加第4个选项卡 选项卡是使用TabNavigator中的元素创建的。我添加了第四个VBOX,如下所示: <mx:VBox label="Data Analysis" width="100%" height="100
<mx:VBox label="Data Analysis" width="100%" height="100%">
<componenets:DeviceLineChart />
</mx:VBox>
DeviceLineChart.mxml如下所示:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:charts="org.axiis.charts.*"
layout="absolute"
creationComplete="start();"
xmlns:axiis="http://www.axiis.org/2009"
xmlns:series="org.axiis.charts.series.*"
xmlns:groupings="org.axiis.charts.groupings.*"
xmlns:degrafa="http://www.degrafa.com/2008"
xmlns:states="org.axiis.states.*"
xmlns:paint="org.axiis.paint.*"
xmlns:Examples="Examples.*"
xmlns:axis="org.axiis.charts.axis.*"
xmlns:labels="org.axiis.charts.labels.*"
xmlns:utils="org.axiis.utils.*" viewSourceURL="srcview/index.html">
<mx:Style source="styles/Axiis_Examples.css"/>
<mx:Script>
<![CDATA[
import org.axiis.data.DataSet;
private var ds:DataSet = new DataSet();
public function start():void
{
ds.processCsvAsTable(payload, false);
//LineSeriesGroup expects each unique series as a row
//Since our data has the time entries on each row (a common format for temporal data) we want to pivot the data
//This then makes a column for each unique time entrie and a row for each unique column.
ds.pivotTable(0);
dataProvider = ds.data.pivot.rows;
hScale.dataProvider=ds.data.pivot.header.slice(1,dataSlice.value+1);
hAxis.invalidateDataProvider();
dc.invalidateDisplayList();
}
private function sliceData():void {
hScale.dataProvider=ds.data.pivot.header.slice(1,dataSlice.value+1);
hAxis.invalidateDataProvider();
myLineGroup.invalidateDataProvider();
dc.invalidateDisplayList();
}
private function axisLabel(obj:Object):String
{
return formatter.format(Number(obj) / 1000);
}
private function filterColumns(obj:Object):Boolean
{
//Don't want filter fields, trim columns
if (obj.index < 1 || obj.index > dataSlice.value)
return false;
else
return true;
}
private function filterRows(obj:Object):Boolean
{
//Trim our rows
if (obj.pivotName == "Apples")
return false;
else
return true;
}
]]>
</mx:Script>
<mx:String id="payload" source="data/LineSeriesData.csv"/>
<mx:CurrencyFormatter currencySymbol="k"
precision="0"
id="formatter"
alignSymbol="right"
useThousandsSeparator="true"/>
<!-- GLOBAL VARIABLES -->
<mx:Object id="dataProvider"/>
<mx:String id="verticalField"/>
<mx:Number id="percentGap">.02</mx:Number>
<!-- EXPRESSIONS -->
<utils:NumericExpression id="tension" value="{slider.value/210}" valueChanged="{if (myLineGroup) dc.invalidateDisplayList();}"/>
<!-- CHART -->
<axiis:LinearScale id="vScale"
dataProvider="{dataProvider}"
minLayout="0"
maxLayout="{myLineGroup.height}"
/>
<axiis:CategoricalScale id="hScale"
minLayout="0"
maxLayout="{myLineGroup.width}"
/>
<axiis:DataCanvas width="80%"
id="dc"
top="120"
bottom="100"
horizontalCenter="0"
strokes="{strokes}"
fills="{fills}"
palettes="{palettes}"
showDataTips="true">
<!-- Background -->
<axiis:backgroundGeometries>
<axis:VAxis id="vAxis"
verticalScale="{vScale}"
tickStroke="{axisStroke}"
width="{dc.width}"
height="{myLineGroup.height}"
showDataTips="false"
fontFamily="Myriad Pro"
fontColor="0"
fontSize="14"
tickGap="5"
majorTickSpacing="50"
labelFunction="{axisLabel}"/>
<axiis:HCategoryAxis id="hAxis"
x="{myLineGroup.x}"
categoryScale="{this.hScale}"
width="{myLineGroup.width}"
dataProvider="{hScale.dataProvider}"
height="50"
y="{myLineGroup.height}"/>
<degrafa:Line x="0"
x1="{myLineGroup.x+myLineGroup.width}"
y="{myLineGroup.height}"
y1="{myLineGroup.height}"
stroke="{axisStroke}"/>
</axiis:backgroundGeometries>
<!-- Layouts -->
<axiis:layouts>
<groupings:LineSeriesGroup id="myLineGroup"
x="12"
y="0"
height="{dc.height-70}"
width="{dc.width}"
tension="{tension.value}"
markerColor="{areaPalette.currentColor}"
dataFilterFunction="{filterRows}"
showArea="{area.selected}"
plotFilterFunction="{filterColumns}"
markerSize="8"
showMarker="{showMarker.selected}"
mode="{int(layoutGroup.selectedValue)}"
dataProvider="{dataProvider}"
plotCollection="columns"
dataField="value"
labelField="pivotName"
xDataField="name"
plotLabelField="name"
verticalScale="{vScale}"
horizontalScale="{hScale}"
stroke="{myStroke}"
fill="{areaFill}"
enableRollOver="true"/>
</axiis:layouts>
</axiis:DataCanvas>
<!-- FILLS & STROKES -->
<mx:Array id="palettes">
<paint:LayoutAutoPalette id="outerPalette" layout="{myLineGroup}" colorFrom="0xCC3333" colorTo="0x3333CC"/>
<paint:LayoutAutoPalette id="clusterPalette" layout="{myLineGroup}" colorFrom="{outerPalette.currentColor}" colorTo="{outerPalette.currentColor | 0x337f00}"/>
<paint:LayoutAutoPalette id="areaPalette" layout="{myLineGroup}" colorFrom="0x3333CC" colorTo="0xCC3333"/>
</mx:Array>
<mx:Array id="fills">
<degrafa:LinearGradientFill id="areaFill" angle="90" enableEvents="false">
<degrafa:GradientStop color="{areaPalette.currentColor}" alpha=".95"/>
<degrafa:GradientStop color="{areaPalette.currentColor | 0x999933}" alpha=".65"/>
</degrafa:LinearGradientFill>
<degrafa:LinearGradientFill id="clusterFill" angle="45" enableEvents="false">
<degrafa:GradientStop color="{clusterPalette.currentColor}"/>
<degrafa:GradientStop color="{clusterPalette.currentColor | 0xFFFFFF}" alpha=".85"/>
</degrafa:LinearGradientFill>
</mx:Array>
<mx:Array id="strokes">
<degrafa:LinearGradientStroke id="colStroke" pixelHinting="true" angle="45" enableEvents="false">
<degrafa:GradientStop color="0xFFFFFF" alpha=".7"/>
<degrafa:GradientStop color="0xFFFFFF" alpha=".3"/>
</degrafa:LinearGradientStroke>
<degrafa:SolidStroke color="0xFFFFFF" alpha=".3"/>
<degrafa:SolidStroke color="0x222222" id="axisStroke" pixelHinting="true"/>
<degrafa:SolidStroke color="{areaPalette.currentColor}"
id="myStroke"
weight="1"
alpha="1"
caps="none"
pixelHinting="true"/>
</mx:Array>
<!-- DISPLAY OBJECTS -->
<mx:HBox id="myBox" bottom="50" horizontalCenter="0">
<mx:HBox>
<mx:Label text="Line Curve" textAlign="right" verticalCenter="0"/>
<mx:HSlider width="80"
id="slider"
minimum="1"
maximum="80"
value="35"
liveDragging="true"
showTrackHighlight="false"
verticalCenter="-5"/>
</mx:HBox>
<mx:Label text="|"/>
<mx:HBox>
<mx:Label text="% Data" textAlign="right" verticalCenter="0"/>
<mx:HSlider width="80"
id="dataSlice"
minimum="3"
maximum="220"
value="30"
snapInterval="1"
change="{sliceData();}"
showTrackHighlight="false"
verticalCenter="-5"/>
</mx:HBox>
<mx:HBox>
<mx:Label text="Label Rotation" textAlign="right" verticalCenter="0"/>
<mx:HSlider width="80"
id="labelRotate"
minimum="0"
maximum="90"
value="0"
snapInterval="1"
change="{hAxis.labelRotation=labelRotate.value;dc.invalidateDisplayList();}"
showTrackHighlight="false"
verticalCenter="-5"/>
</mx:HBox>
<mx:Label text="|"/>
<mx:HBox>
<mx:Label text="Area" textAlign="right" verticalCenter="0"/>
<mx:CheckBox id="area" change="{dc.invalidateDisplayList();}" selected="true"/>
</mx:HBox>
<mx:Label text="|"/>
<mx:HBox>
<mx:Label text="Marker" textAlign="right" verticalCenter="0"/>
<mx:CheckBox id="showMarker" change="{dc.invalidateDisplayList();}"/>
</mx:HBox>
<mx:Label text="|"/>
<mx:Spacer width="20"/>
<mx:HBox>
<mx:RadioButtonGroup id="layoutGroup" change="{dc.invalidateDisplayList();}"/>
<mx:RadioButton label="Overlay" group="{layoutGroup}" value="{LineSeriesGroup.MODE_BASELINE}" selected="true"/>
<mx:RadioButton label="Stack" group="{layoutGroup}" value="{LineSeriesGroup.MODE_STACK_ZERO}"/>
<mx:RadioButton label="Flow" group="{layoutGroup}" value="{LineSeriesGroup.MODE_STACK_FLOW}"/>
</mx:HBox>
</mx:HBox></mx:Application>
为什么“DeviceLineChart”是
?如果您不想加载子应用程序,您可能只想将其改为
。如果您确实计划动态加载这些,那么您需要考虑使用模块加载器。您要告诉Flex的是,在您的系统中运行着两个应用程序,当您使用两个应用程序而不使用加载系统时,像SystemManager这样的一些单例程序无法工作 为什么“DeviceLineChart”是
?如果您不想加载子应用程序,您可能只想将其改为
。如果您确实计划动态加载这些,那么您需要考虑使用模块加载器。您要告诉Flex的是,在您的系统中运行着两个应用程序,当您使用两个应用程序而不使用加载系统时,像SystemManager这样的一些单例程序无法工作 在调试模式下运行您的代码,您可以使用堆栈跟踪来确定触发错误的确切原因以及来自哪个组件/类。是的,我在调试模式下运行,结果只得到“无法访问的源代码”消息。我假设无法访问的代码消息位于Axis SWC库文件中,或者web上对库的命名空间引用中。关于如何调试这样的不可访问代码,您有什么建议吗?堆栈跟踪应该给出类的名称。Axis和Degrafa都应该是开源的,这样您就可以获得代码。在调试模式下运行代码,您可以使用堆栈跟踪来确定到底是什么触发了错误,以及从哪个组件/类触发错误。是的,我在调试模式下运行,最后只会得到“无法访问的源代码”消息。我假设无法访问的代码消息位于Axis SWC库文件中,或者web上对库的命名空间引用中。关于如何调试这样的不可访问代码,您有什么建议吗?堆栈跟踪应该给出类的名称。Axis和Degrafa都应该是开源的,所以你可以得到代码。谢谢,我实际上使用了一个面板而不是画布。它确实起了作用,因为我再也看不到这个bug被抛出了:)这对我来说现在是有意义的,但当时相当混乱。谢谢你的帮助,干杯!谢谢,我实际上用的是一个面板而不是画布。它确实起了作用,因为我再也看不到这个bug被抛出了:)这对我来说现在是有意义的,但当时相当混乱。谢谢你的帮助,干杯!