当前位置:  开发笔记 > 编程语言 > 正文

每当将数据添加到dataProvider时,如何刷新Flex Chart?

如何解决《每当将数据添加到dataProvider时,如何刷新FlexChart?》经验,为你挑选了1个好方法。

现在我必须在这里遗漏一些东西,因为这似乎是一个非常基本的问题,可以在任何"Flex图表入门"教程中解决.但是,我能找到的所有内容都暗示图表应该在dataProvider更改时自动更新.请注意,提示.

这是我的标记:



    
    
    
        
        
            
                
                    
                
                
                    
                
            
            
                
                
            
        
     

这是我的ActionScript的一部分:

[Bindable]
public var xmlDataTest:Array = [
        { dt: "1230908694", fltValue: "50.4" },
        // ...
        { dt: "1230909594", fltValue: "35.4" }
]

public var dflt:Number = 10.0;
public var timData:Timer = new Timer(3000);

// ...

public function vDataStart():void
{
    if (!timData.running) {
        timData.addEventListener(TimerEvent.TIMER, vAppendDatum);
        timData.start();
    }
}

public function vDataStop():void
{
    if (timData.running) {
        timData.stop();
    }
}

public function vAppendDatum(evt:Event):void
{
    var dtNew:String;
    var fltNew:String;
    var fltT: Number;
    dtNew = String(Number(xmlDataTest[xmlDataTest.length - 1].dt) + 100);
    fltT = Number(xmlDataTest[xmlDataTest.length - 1].fltValue);
    if (fltT < 10.0 || fltT > 70) {
        dflt *= -1;
    }
    fltNew = String(fltT + dflt);
    xmlDataTest.push({ dt: dtNew, fltValue: fltNew });
    //trace("Datenpunkte: " + xmlDataTest.length);
}

单击"开始"按钮,数据阵列每3秒扩展一次,但屏幕上的图表保持不变.



1> rmeador..:

看看这个.在Flex中,所有数据结构类(例如Array)都具有相应的Collection(或CollectionView)类,它们充当包装器.当您使用诸如的包装函数时addItem(),它会将事件调度到任何侦听通知它们的集合已更改.您需要将dataProvider设置ArrayCollection为该包装的实例xmlDataTest.

编辑:另外,因为我最初不太清楚,你需要通过ArrayCollection包装器对数组进行所有操作.对基础数据所做的任何更改都不会通过该接口,系统的其余部分无法知道.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有