Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.09.2011, 13:00
F10 вне форума Посмотреть профиль Отправить личное сообщение для F10 Найти все сообщения от F10
  № 1  
Ответить с цитированием
F10

Регистрация: Apr 2011
Сообщений: 61
По умолчанию Кеширование картинок в таблицах [Flex]

Создаю спарк таблицу, под один столбец создаю ItemRenerer.
В этом ItemRenderer-е показываю иконку (BitmapData) этой строки.

Все работает, кроме одного странного эффекта: при первой прокрутке вниз таблицы (таблица довольно большая) все картинки каждой строки показывает нормально..Но при прокрутки обратно уже показывает одинаковые картинки (т.е. кеширует где-то картинки, которые отображаются в видимой части таблицы, и показывает только их даже для других строк, при прокрутке туда-обратно)...

Как-то можно заставить показывать иконки нормально?

Старый 06.09.2011, 15:49
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
У вас ItemRenderer корявый.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 06.09.2011, 18:23
F10 вне форума Посмотреть профиль Отправить личное сообщение для F10 Найти все сообщения от F10
  № 3  
Ответить с цитированием
F10

Регистрация: Apr 2011
Сообщений: 61
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
					xmlns:s="library://ns.adobe.com/flex/spark" 
					xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true">
 
	<fx:Script>
		<![CDATA[
			[Bindable]
			private var _bitmapData:BitmapData;
 
			override public function prepare(hasBeenRecycled:Boolean):void
			{
				if(data != null && _bitmapData == null)
				{
					_bitmapData = data.bitmapData as BitmapData;
				}
			}
 
		]]>
	</fx:Script>
 
	<s:Image source="{_bitmapData}" maxWidth="60" maxHeight="30"/>
 
</s:GridItemRenderer>
Добавлено через 22 минуты
Решил:
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
					xmlns:s="library://ns.adobe.com/flex/spark" 
					xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true">
 
	<s:Image source="{data.bitmapData}" maxWidth="60" maxHeight="30"/>
 
</s:GridItemRenderer>


Последний раз редактировалось F10; 06.09.2011 в 18:46.
Старый 06.09.2011, 19:02
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Ошибка у вас в условии. ItemRenderer'ы используются повторно и при втором заходе _bitmapData != null, там данные предыдущей картинки.

Нафига там вообще байндинг?
Вы используете скинирование для Image? Если нет, то используйте BitmapImage

Код:
<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
					xmlns:s="library://ns.adobe.com/flex/spark" 
					xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true">
 
	<fx:Script>
		<![CDATA[
			private var _data:Object;

			override public function set data(value:Object):void
			{
				if (_data == value)
					return;

				super.data = value;
				_data = value;

				if(_data != null && _data.bitmapData != null && _data.bitmapData !== image.source)
				{
					image.source = data.bitmapData as BitmapData;
				}
			}
		]]>
	</fx:Script>
 
	<s:BitmapImage id="image" maxWidth="60" maxHeight="30"/>
 
</s:GridItemRenderer>
__________________
משיח לא בא
משיח גם לא מטלפן


Последний раз редактировалось alatar; 06.09.2011 в 19:24.
Старый 06.09.2011, 19:06
F10 вне форума Посмотреть профиль Отправить личное сообщение для F10 Найти все сообщения от F10
  № 5  
Ответить с цитированием
F10

Регистрация: Apr 2011
Сообщений: 61
Спасибо..Теперь понял..

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:49.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.