问题描述
||
Flash Builder图表面临一个严重的问题。
第一次加载图表时,我会收到以下信息-
但是,如果我立即在同一浏览器中刷新页面,则会得到以下信息-
第二个是预期的。如果我关闭浏览器窗口并在新的浏览器窗口中将其打开,只会重复出现此问题。
为了正确解释,我在此处附加源代码-
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<s:Group xmlns:fx=\"http://ns.adobe.com/mxml/2009\"
xmlns:s=\"library://ns.adobe.com/flex/spark\"
xmlns:defaultstatistics=\"services.defaultstatistics.*\"
xmlns:mx=\"library://ns.adobe.com/flex/mx\" width=\"800\" height=\"800\"
xmlns:Examples=\"Examples.*\"
creationComplete=\"start();\" >
<!--<fx:Style source=\"styles/Golibaje.css\"/>-->
<fx:Script>
<![CDATA[
import CustomEvents.ChartLoadedEvent;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
import mx.utils.object_proxy;
import org.axiis.core.Axiissprite;
import org.axiis.data.DataSet;
private var ds:DataSet = new DataSet();
public var loaded:Boolean = false;
//Set this variable to the appropriate time period used by the data.
[Bindable]
public var timeIncrement:String = \"month\";
[Bindable]
private var performanceData:ArrayCollection = new ArrayCollection([
{month:\"January\",correct:100,correctOutsideBase:50,incorrect:50,skipped:25},{month:\"February\",correct:110,correctOutsideBase:40,skipped:30},{month:\"march\",correct:120,incorrect:25,{month:\"April\",correctOutsideBase:45,incorrect:20,skipped:20},{month:\"May\",correct:135,correctOutsideBase:25,skipped:15},{month:\"June\",correct:150,correctOutsideBase:15,incorrect:15,skipped:5},{month:\"July\",correct:155,correctOutsideBase:10,incorrect:10},{month:\"August\",correct:160,correctOutsideBase:5,incorrect:15},{month:\"September\",correct:170,incorrect:10}
]);
[Bindable]
private var pointsData:ArrayCollection = new ArrayCollection([
{month:\"January\",points:1000},points:1200},points:1400},points:1500},points:1600},points:1650},points: 1800},points: 2000},points: 2500}
]);
public function start():void
{
var t:Timer = new Timer(2000,1);
t.addEventListener(TimerEvent.TIMER_COMPLETE,fireChartLoaded);
t.start();
}
private function fireChartLoaded(event){
loaded = true;
dispatchEvent(new Event(\"chartLoaded\"));
}
]]>
</fx:Script>
<fx:Declarations>
</fx:Declarations>
<mx:CartesianChart id=\"PerformanceTimeChart\" dataProvider=\"{performanceData}\"
showdatatips=\"true\" width=\"800\" height=\"700\"
verticalCenter=\"0\" horizontalCenter=\"0\">
<mx:verticalAxisRenderers>
<mx:AxisRenderer placement=\"left\" axis=\"{columnAxis}\"/>
<mx:AxisRenderer placement=\"right\" axis=\"{pointsAxis}\"/>
</mx:verticalAxisRenderers>
<mx:horizontalAxis>
<mx:CategoryAxis categoryField=\"{timeIncrement}\"/>
</mx:horizontalAxis>
<mx:series>
<mx:ColumnSet type=\"stacked\">
<mx:verticalAxis>
<mx:Linearaxis id=\"columnAxis\" title=\"Result\"/>
</mx:verticalAxis>
<mx:ColumnSeries
yField=\"correct\"
displayName=\"Correct\"
verticalAxis=\"{columnAxis}\"/>
<mx:ColumnSeries
yField=\"correctOutsideBase\"
displayName=\"Outside Base\"
verticalAxis=\"{columnAxis}\"/>
<mx:ColumnSeries
yField=\"incorrect\"
displayName=\"Wrong Answer\"
verticalAxis=\"{columnAxis}\"/>
<mx:ColumnSeries
yField=\"skipped\"
displayName=\"Skipped Question\"
verticalAxis=\"{columnAxis}\"/>
</mx:ColumnSet>
<mx:Lineseries
dataProvider=\"{pointsData}\"
yField=\"points\"
displayName=\"Points\">
<mx:verticalAxis>
<mx:Linearaxis id=\"pointsAxis\" title=\"Points\"/>
</mx:verticalAxis>
</mx:Lineseries>
</mx:series>
</mx:CartesianChart>
<mx:Legend dataProvider=\"{PerformanceTimeChart}\" direction=\"horizontal\"/>
</s:Group>
任何人都知道为什么会发生这种情况吗?
解决方法
在CartesianChart中使用ColumnSet时,Flex Charting SDK中存在一个错误,涉及将元素设置为ColumnSet包含的ColumnSeries的dataTranform对象。
作为此问题的解决方法,我将元素自己设置为扩展的ColumnSeries类中的dataTransform对象:
public class GroupedColumnSeries extends ColumnSeries
{
override protected function commitProperties():void
{
super.commitProperties();
if (this.parent is ColumnSet)
{
dataTransform.elements=[ColumnSet(this.parent)];
}
}
}