Apache flex 在弹性图表中使用多个轴和动画
我必须展示两个系列的折线图,每个系列都有“日期值”,因为每个系列中的日期可能相距很远,它们有自己的水平轴。Apache flex 在弹性图表中使用多个轴和动画,apache-flex,animation,charts,Apache Flex,Animation,Charts,我必须展示两个系列的折线图,每个系列都有“日期值”,因为每个系列中的日期可能相距很远,它们有自己的水平轴。 问题是,当我将动画添加到系列中时,动画开始循环,并且从不停止。 我的问题是:我做错什么了吗?或者这是flex图表中的错误? 有人知道如何解决这个问题吗? 下面是一个示例代码: ` 一 二 ` 有什么想法吗?嗯,我没有答案,我不知道为什么会发生这种情况。 但我找到了解决问题的办法: 当序列结束时,您必须从序列中删除效果,然后在更改序列的数据提供程序时,需要将其添加回,如下所示: <
问题是,当我将动画添加到系列中时,动画开始循环,并且从不停止。
我的问题是:我做错什么了吗?或者这是flex图表中的错误? 有人知道如何解决这个问题吗?
下面是一个示例代码: `
一
二
`
有什么想法吗?嗯,我没有答案,我不知道为什么会发生这种情况。 但我找到了解决问题的办法:
当序列结束时,您必须从序列中删除效果,然后在更改序列的数据提供程序时,需要将其添加回,如下所示:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FFFFFF, #FFFFFF]">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.collections.ArrayCollection;
[Bindable]
private var arr1:ArrayCollection = new ArrayCollection([
{date_1:"01/2008", value_1:2, date_2:"01/2008", value_2:4},
{date_1:"02/2008", value_1:5, date_2:"02/2008", value_2:3},
{date_1:"03/2008", value_1:4, date_2:"03/2008", value_2:5},
{date_1:"04/2008", value_1:7, date_2:"04/2008", value_2:4}]);
[Bindable]
private var arr2:ArrayCollection = new ArrayCollection([
{date_1:"01/2007", value_1:4, date_2:"01/2007", value_2:7},
{date_1:"02/2007", value_1:7, date_2:"02/2007", value_2:5},
{date_1:"03/2007", value_1:3, date_2:"03/2007", value_2:2},
{date_1:"04/2007", value_1:5, date_2:"04/2007", value_2:5}]);
private var temp:Boolean = false;
private function addAnimacion():void{
serie_1.setStyle("showDataEffect", "aniShow");
serie_2.setStyle("showDataEffect", "aniShow");
}
private function removeAnimacion():void{
serie_1.setStyle("showDataEffect", "");
serie_2.setStyle("showDataEffect", "");
}
private function switchGraf():void{
addAnimacion();
if( temp){
serie_1.dataProvider = arr1;
serie_2.dataProvider = arr1;
} else {
serie_1.dataProvider = arr2;
serie_2.dataProvider = arr2;
}
temp = !temp;
}
]]>
</mx:Script>
<mx:WipeRight duration="1000" id="aniShow" showTarget="true" effectEnd="removeAnimacion();"/>
<mx:ComboBox change="switchGraf()">
<mx:String>one</mx:String>
<mx:String>two</mx:String>
</mx:ComboBox>
<mx:LineChart>
<mx:series>
<mx:LineSeries id="serie_1" yField="value_1" dataProvider="{arr1}">
<mx:horizontalAxis>
<mx:CategoryAxis id="ejeAct" categoryField="date_1"/>
</mx:horizontalAxis>
</mx:LineSeries>
<mx:LineSeries id="serie_2" yField="value_2" dataProvider="{arr1}">
<mx:horizontalAxis>
<mx:CategoryAxis id="ejeAnt" categoryField="date_2"/>
</mx:horizontalAxis>
</mx:LineSeries>
</mx:series>
<mx:verticalAxis>
<mx:LinearAxis minimum="0" maximum="10"/>
</mx:verticalAxis>
<mx:horizontalAxisRenderers>
<mx:AxisRenderer placement="bottom" axis="{ejeAct}"/>
<mx:AxisRenderer placement="top" axis="{ejeAnt}"/>
</mx:horizontalAxisRenderers>
</mx:LineChart>
一
二
希望这对别人有帮助 嗯,我没有答案,我不知道为什么会这样。 但我找到了解决问题的办法:
当序列结束时,您必须从序列中删除效果,然后在更改序列的数据提供程序时,需要将其添加回,如下所示:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FFFFFF, #FFFFFF]">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.collections.ArrayCollection;
[Bindable]
private var arr1:ArrayCollection = new ArrayCollection([
{date_1:"01/2008", value_1:2, date_2:"01/2008", value_2:4},
{date_1:"02/2008", value_1:5, date_2:"02/2008", value_2:3},
{date_1:"03/2008", value_1:4, date_2:"03/2008", value_2:5},
{date_1:"04/2008", value_1:7, date_2:"04/2008", value_2:4}]);
[Bindable]
private var arr2:ArrayCollection = new ArrayCollection([
{date_1:"01/2007", value_1:4, date_2:"01/2007", value_2:7},
{date_1:"02/2007", value_1:7, date_2:"02/2007", value_2:5},
{date_1:"03/2007", value_1:3, date_2:"03/2007", value_2:2},
{date_1:"04/2007", value_1:5, date_2:"04/2007", value_2:5}]);
private var temp:Boolean = false;
private function addAnimacion():void{
serie_1.setStyle("showDataEffect", "aniShow");
serie_2.setStyle("showDataEffect", "aniShow");
}
private function removeAnimacion():void{
serie_1.setStyle("showDataEffect", "");
serie_2.setStyle("showDataEffect", "");
}
private function switchGraf():void{
addAnimacion();
if( temp){
serie_1.dataProvider = arr1;
serie_2.dataProvider = arr1;
} else {
serie_1.dataProvider = arr2;
serie_2.dataProvider = arr2;
}
temp = !temp;
}
]]>
</mx:Script>
<mx:WipeRight duration="1000" id="aniShow" showTarget="true" effectEnd="removeAnimacion();"/>
<mx:ComboBox change="switchGraf()">
<mx:String>one</mx:String>
<mx:String>two</mx:String>
</mx:ComboBox>
<mx:LineChart>
<mx:series>
<mx:LineSeries id="serie_1" yField="value_1" dataProvider="{arr1}">
<mx:horizontalAxis>
<mx:CategoryAxis id="ejeAct" categoryField="date_1"/>
</mx:horizontalAxis>
</mx:LineSeries>
<mx:LineSeries id="serie_2" yField="value_2" dataProvider="{arr1}">
<mx:horizontalAxis>
<mx:CategoryAxis id="ejeAnt" categoryField="date_2"/>
</mx:horizontalAxis>
</mx:LineSeries>
</mx:series>
<mx:verticalAxis>
<mx:LinearAxis minimum="0" maximum="10"/>
</mx:verticalAxis>
<mx:horizontalAxisRenderers>
<mx:AxisRenderer placement="bottom" axis="{ejeAct}"/>
<mx:AxisRenderer placement="top" axis="{ejeAnt}"/>
</mx:horizontalAxisRenderers>
</mx:LineChart>
一
二
希望这对别人有帮助