使用Slider更改开始和结束JSON数据的Flex LineChart

时间:2011-02-28 23:11:55

标签: flex json slider mxml

我的JSON数据文件ise data.txt

[ 
    {
        "sayim":"1",
        "x":"400",
        "y":"5",
        "z":"-6"

    },

    {
        "sayim":"2",
        "x":"4",
        "y":"-40",
        "z":"700"
    },

    {
        "sayim":"3",
        "x":"5",
        "y":"-5",
        "z":"500"
    },

    {
        "sayim":"4",
        "x":"1400",
        "y":"50",
        "z":"-6"
    },

    {
        "sayim":"5",
        "x":"4",
        "y":"5",
        "z":"6"
    }
]

我的目标是创建一个Slider,它可以改变图形的开始和结束,就像图{6}}中显示的那样

这里是MXML代码;

 .
                            ..
                            ...
                            jsonDataArray = JSON.decode(urlLoader.data);    
            proceed();
            }
         private function proceed():void
            {

                dgg.dataProvider = jsonDataArray;
            }

        ]]>
    </mx:Script>
<mx:HSlider  minimum="1" maximum="30" id="daySlider" snapInterval="1" thumbCount="2" values="[1,30]" /> 
    <mx:LineChart id="dgg" width="1000" height="500" horizontalCenter="0" > 
        <mx:series> 
    <mx:LineSeries xField="sayim" yField="x" displayName="X Bileşeni" /> 
    <mx:LineSeries xField="sayim" yField="y" displayName="Y Bileşeni" /> 
    <mx:LineSeries xField="sayim" yField="z" displayName="Z Bileşeni" /> 
        </mx:series> 
    </mx:LineChart> 
    <mx:Legend dataProvider="{dgg}" />

问题是LineChart中的“dataProvider”定义,我编写了这段代码,但它仍然无效,

dataProvider="{dgg(sayim>=daySlider.values[0] && sayim<=daySlider.values[1])}"

使用Slider控制LineChart的正确代码是什么。

1 个答案:

答案 0 :(得分:0)

你在这里混淆你的比喻。

在那篇文章中,他使用EcmaScript For Xml(E4X)将XML查询绑定到dataProvider。该行中的“点”非常重要,因为它假设一个松散的XML树。它还使用day上的查询语法,只能使用XML对象。因此,仅当stockData是XML数据类型时,以下绑定才有效。

dataProvider="{stockData..day.(num >= daySlider.value )}"

但是,在您的情况下,您的数据是JSON,因此您的对象不是上述查询将起作用的形式。

此外,您要将dataProvider设置为调用函数dgg,但dggLineChart而不是函数。

在您的情况下,我建议您将数据打包到ArrayCollection并使用filterFunction来定义如何过滤该数据。然后,直接绑定到ArrayCollection并修改由refresh()继续的过滤器功能。您可以在此处查看执行此操作的示例:http://www.flex-blog.com/arraycollection-filter-example/

祝你好运