Комментарии 4
У вас довольно неплохой компонент, но меня даже больше заинтересовал MemoryMonitor.
А вообще, проблему с кешированием картинок пробовал решить один довольно известный флексер здесь: www.quietlyscheming.com/blog/2007/01/23/some-thoughts-on-doubt-on-flex-as-the-best-option-orhow-i-made-my-flex-images-stop-dancing/, правда, у него была задача избавиться от мелькания в компонентах типа «List».
А вообще, проблему с кешированием картинок пробовал решить один довольно известный флексер здесь: www.quietlyscheming.com/blog/2007/01/23/some-thoughts-on-doubt-on-flex-as-the-best-option-orhow-i-made-my-flex-images-stop-dancing/, правда, у него была задача избавиться от мелькания в компонентах типа «List».
Если честно, то компонент Image вообще какой-то кривоватый.
При работе с картинками я сделал специальную обвертку вокруг Bitmap, пронаследовав UIComponent, а загрузкой непосредственно графики занимается отдельнй класс, использующий Loader. Загруженная BitmapData затем асайнится моему компоненту. В классе, отвечающем за загрузку, реализован 1й вариант кеширивания, который вам не подошел, но мне такой подошел отлично. Хотя можно и реализовать и вашу логику.
Спс за сорс!
При работе с картинками я сделал специальную обвертку вокруг Bitmap, пронаследовав UIComponent, а загрузкой непосредственно графики занимается отдельнй класс, использующий Loader. Загруженная BitmapData затем асайнится моему компоненту. В классе, отвечающем за загрузку, реализован 1й вариант кеширивания, который вам не подошел, но мне такой подошел отлично. Хотя можно и реализовать и вашу логику.
Спс за сорс!
Спасибо за комментарии.
Нашёл что-то вроде бага во flash под FireFox (под opera/ie всё норм) — если есть Image, для которого source'ом является Bitmap, и этот Bitmap обновляется тем же bitmapData, то первым кадром выводится полная картинка (без увеличения/уменьшения) и только на следующем кадре она выводится в заданном размере (flash берёт «паузу»)
Лечится просто — вставить перед
super.source = new Bitmap(cached_imageData[cachedFilenameID]);
проверку
if((super.source is Bitmap) && (super.source.bitmapData != null) && (super.source.bitmapData == cached_imageData[cachedFilenameID]))
return;
Это вообще надо в код добавить, чтобы не создавать лишний Bitmap каждый раз
Нашёл что-то вроде бага во flash под FireFox (под opera/ie всё норм) — если есть Image, для которого source'ом является Bitmap, и этот Bitmap обновляется тем же bitmapData, то первым кадром выводится полная картинка (без увеличения/уменьшения) и только на следующем кадре она выводится в заданном размере (flash берёт «паузу»)
Лечится просто — вставить перед
super.source = new Bitmap(cached_imageData[cachedFilenameID]);
проверку
if((super.source is Bitmap) && (super.source.bitmapData != null) && (super.source.bitmapData == cached_imageData[cachedFilenameID]))
return;
Это вообще надо в код добавить, чтобы не создавать лишний Bitmap каждый раз
Попробуй использовать Dictionary для кеширования и URL как ключ, намного удобнее будет.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Прозрачное кеширование изображений во Flash/Flex