Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 flex图表的数据提供程序更改时如何触发?_Actionscript 3_Apache Flex_Flex4_Flex3_Flex4.5 - Fatal编程技术网

Actionscript 3 flex图表的数据提供程序更改时如何触发?

Actionscript 3 flex图表的数据提供程序更改时如何触发?,actionscript-3,apache-flex,flex4,flex3,flex4.5,Actionscript 3,Apache Flex,Flex4,Flex3,Flex4.5,flex图表的数据提供程序更改时是否可能触发?有什么想法吗,伙计们? 我使用了oncreation complete,但动态更改图表的数据源时它不起作用。如果dataProvider是ArrayCollection您可以将侦听器添加到dataProvider对象集合本身: dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE,listernerFunction); 请注意,例如,如果将整个数据提供程序对象替换为代码 da

flex图表的数据提供程序更改时是否可能触发?有什么想法吗,伙计们?
我使用了oncreation complete,但动态更改图表的数据源时它不起作用。

如果
dataProvider
ArrayCollection
您可以将侦听器添加到dataProvider对象集合本身:

dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE,listernerFunction);
请注意,例如,如果将整个
数据提供程序
对象替换为代码

dataProvider  = null;
dataProvider = new ArrayCollection();
您将不会触发该事件,并且必须向新对象添加一个新的侦听器

否则,您可以将侦听器添加到图表本身,该图表将在每次替换数据提供程序对象时触发,但在集合本身更改时不会触发

chart.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE,funct);
[..]
protected function funct( event:PropertyChangeEvent):void{
    if(event.property=="dataProvider"){
        //Your code
    }
}

尝试Changewatcher

import mx.binding.utils.ChangeWatcher;
import mx.events.PropertyChangeEvent;

ChangeWatcher.watch(this, "dataProvider", watchHandler);

private function watchHandler(e:PropertyChangeEvent):void
 {
                    // Do Something
 }
否则就试试这个, 将集合更改侦听器添加到图表本身,如下所示

chart.addEventListener(CollectionEvent.COLLECTION_CHANGE, onChartDataProviderChange);

private function onChartDataProviderChange(e:CollectionEvent):void
     {
                        // Do Something
     }

if(condition1){
chart.dataprovider=provider1;
} 
if(condition2){
chart.dataprovider=provider2;
}

希望能有所帮助。

感谢您的回复。但我需要在集合本身更改时触发。感谢您的回复。这仅在更改整个数据提供程序时有效。当同一个数据提供者发生变化时,我会触发。你所说的整个数据提供者是什么意思?您需要在上面的代码中将“dataprovider”替换为您的dataprovider名称。如果(条件1){chart.dataprovider=provider1}如果(条件2){chart.dataprovider=provider2}这正是我所期望的。provider1和provider2的长度不一样。编辑我的帖子检查一下。