Я не уверен, с чего начать ...
Связывание работает в системе событий Flex; поэтому, когда привязка обновлена, она не является мгновенной / синхронной. Посмотрите на эти сегменты кода:
public function handleCreationComplete(event:Event):void
{
booths = new ArrayCollection();
booths.addItem( "item1" );
booths.addItem( "item2" );
}
<components:FloorplanGrid id="grid" width="400" height="300" booths="{booths}" />
Итак, вы создаете стенд ArrayCollection и добавляете в него два элемента. Это синхронный код, поэтому эти три элемента происходят сразу после друг друга. Стенды ArrayCollection привязаны к свойству стендов в FloorplanGrid. Это обновление будет происходить асинхронно; поэтому будет задержка.
Таким образом, вполне вероятно, что элементы будут добавлены в ArrayCollection до того, как свойство booths в FloorplanGrid будет содержать новое значение. Таким образом, событие изменения коллекции никогда не запускается из FloorplanGrid.
Кроме того, вы устанавливаете прослушиватель событий для события сбора изменений в конструкторе FloorplanGrid:
public function FloorplanGrid()
{
booths.addEventListener(CollectionEvent.COLLECTION_CHANGE, handleBoothsChange);
super();
}
Таким образом, вы прослушиваете событие в объекте 'new ArrayCollection ()', созданном внутри компонента. Когда вы меняете свойство booths, вы не добавляете прослушиватель событий к новому значению; как таковой у вас нет слушателя событий в игре.
Возможно, вы хотите изменить свойство booths на свойство get / set. Как это:
private var _booths:ArrayCollection;
[Bindable]
public function get booths():ArrayCollection{
return _booths;
}
public function set booths(value:ArrayCollection):void{
if(_booths){
_booths.removeEventListener(CollectionEvent.COLLECTION_CHANGE, handleBoothsChange);
}
_booths = value;
if(_booths){
_booths.addEventListener(CollectionEvent.COLLECTION_CHANGE, handleBoothsChange);
}
}
Удаление прослушивателя событий и его повторное добавление поможет предотвратить утечки памяти в вашем приложении. Потому что в вашем приложении не будет ошибочного прослушивателя, который бы мешал сборке старого значения.