我的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的正确代码是什么。
答案 0 :(得分:0)
你在这里混淆你的比喻。
在那篇文章中,他使用EcmaScript For Xml(E4X)将XML查询绑定到dataProvider
。该行中的“点”非常重要,因为它假设一个松散的XML树。它还使用day
上的查询语法,只能使用XML对象。因此,仅当stockData
是XML数据类型时,以下绑定才有效。
dataProvider="{stockData..day.(num >= daySlider.value )}"
但是,在您的情况下,您的数据是JSON,因此您的对象不是上述查询将起作用的形式。
此外,您要将dataProvider
设置为调用函数dgg
,但dgg
是LineChart
而不是函数。
在您的情况下,我建议您将数据打包到ArrayCollection
并使用filterFunction
来定义如何过滤该数据。然后,直接绑定到ArrayCollection
并修改由refresh()
继续的过滤器功能。您可以在此处查看执行此操作的示例:http://www.flex-blog.com/arraycollection-filter-example/