Получать уведомления об изменениях в растровом изображении Flex или BitmapData?

Как в Flex подключиться к переменной bitmap или bitmapdata, чтобы функция уведомлялась всякий раз, когда данные растрового изображения изменяются (пиксель изменен или добавлен фильтр)?

Я пробовал настроить привязку, но это не работает.

Должен быть способ сделать это, потому что я могу привязать mx: Image к растровому изображению через атрибут «source», а отображаемое изображение обновляется все время, когда я изменяю растровое изображение. Как это работает Flex? Он слепо перерисовывает растровое изображение в каждом кадре, или он умный и перерисовывается только при изменении растрового изображения? Если да, то как узнать об изменении растрового изображения?


person Hisham    schedule 29.09.2010    source источник
comment
Против чего вы связались, когда пытались привязать? Можете ли вы включить этот код, даже если он не работает?   -  person Ross Henderson    schedule 29.09.2010


Ответы (1)


Это всего лишь полуобоснованное предположение, без каких-либо проверок, так что относитесь к нему с некоторой долей скепсиса.

Когда Flex связывает исходный атрибут Image, значение .source имеет тип BitmapAsset.

BitmapAsset имеет свойство .bitmapData, которое является ссылкой на рассматриваемое растровое изображение.

Я ожидаю, что привязка, сделанная Flex, противоречит этому свойству .bitmapData.

Я не вижу причин, по которым у вас тоже не должно быть такой возможности. Я думаю, вам придется проделать небольшую круговую работу, поскольку вам нужно будет создать экземпляр BitmapAsset и заполнить его BitmapData, за которым вы хотите следить, а затем привязать к свойству .bitmapData объекта BitmapAsset.

Предполагая, что переменная с именем bitmapData является экземпляром BitmapData, я думаю, что следующее должно работать.

var bitmapAsset:BitmapAsset = new BitmapAsset(bitmapData);

var bitmapDataChangeWatcher:ChangeWatcher = BindingUtils.bindSetter(handleChangeToBitmapData, bitmapAsset, "bitmapData");

private function handleChangeToBitmapData(data:BitmapData):void
{
    // Handle change to the bitmap data
}
person Ross Henderson    schedule 29.09.2010