Проблема в том, что вы не сбрасываете dataProvider и ничего не делаете для запуска события collectionChange.Я буду иметь дело с каждым в отдельности.Вот как вы сбрасываете dataProvider:
testMeter.dataProvider = newDataPRovider;
Но вы этого не делаете.Таким образом, метод set никогда не будет выполняться после первого начального набора.
Если вам нужно запустить событие collectionChange, вам нужно изменить коллекцию.Вы на самом деле не делаете это.Вы меняете объект в коллекции.Этот код не меняет коллекцию:
meterData[0].value = Math.round(mySlider.value)*10;
Он просто меняет одно свойство в одном из объектов коллекции.Попробуйте что-то вроде этого:
var newObject = meterData[0];
newObject['value'] = Math.round(mySlider.value)*10
meterData.addItem(newObject);
Этот код должен запускать событие colletionChange, даже если у вас этого кода нет.
У меня есть еще несколько мыслей, не связанных с вашим основным вопросом.Обязательно удалитеEventListeners в методе набора данных dataProvider, например:
public function set dataProvider( value:Object ):void {
if ( value )
{
// remove the event listeners here before changing the value
// that should allow the object to have no extra 'references' that prevent it from being garbage collected
_dataProvider.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, propertyChanged);
_dataProvider.removeEventListener(CollectionEvent.COLLECTION_CHANGE,collectionChanged);
if(value is ArrayCollection)
{
_renderDirty = true;
_dataProvider = value as ArrayCollection;
}
if(_dataProvider)
{
_dataProvider.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, propertyChanged);//used both eventlisteners but none actually ever fire off
_dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE,collectionChanged);
}
invalidateDisplayList();//only happens the first time
}
}
И вы сказали:
(не хотите говорить «dataProvider», потому что он не является провайдером данных Flex), просто переменная)
dataProvider в Flex List, либо DataGrid, либо DataGroup также является «просто переменной».Я не вижу, как реализация «Flex Framework» так сильно отличается от того, что вы делали, в любом случае концептуально.Поскольку вы конкретно ожидаете минимальное и максимальное значения, возможно, вам следует использовать объект значения с этими явными свойствами вместо ArrayCollection.