Показать сообщение отдельно
Старый 06.04.2013, 16:05
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 4  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
Не знаю стоит ли их перерисовывать - проще применить colorTransform

Код AS3:
		private function mouseEventHandler(event:MouseEvent):void
		{
			var obj:DisplayObject = event.target as DisplayObject;
			setTint(obj, color, percent);
		}
 
		private function setTint(object:DisplayObject, rgb:uint, percent:uint):void
		{
			var t:Transform = new Transform(object);
			var ct:ColorTransform = t.colorTransform;
 
			var ratio : Number = percent / 100;
			ct.redOffset = (rgb >> 16)*ratio;
			ct.greenOffset = ((rgb >> 8) & 0xFF)*ratio;
			ct.blueOffset = (rgb & 0xFF)*ratio;
 
			ct.redMultiplier = ct.greenMultiplier = ct.blueMultiplier = 1 - percent/100;
 
			t.colorTransform = ct;
		}
Правда с точки зрения архитектуры не очень хорошая правктика менять свойства прямов в событии. Лучше устанавливать виртуальное свойство, а уже ячейки из него пусть берут текущий цвет

Добавлено через 6 минут
Для некоторых случаев когда элемент уже раскрашен определенным образом неплохо смотрится наложение поверх плашки в режиме BlendMode.OVERLAY (или другом).
Тогда сохраняются некоторые оттенки основной графики и элемент обретает некоторый общий стиль в определенном тоне, а не происходит полное перекрашивание

Добавлено через 7 минут
А вообще посмотрите на устройство компонента DataGrid в стандартном наборе флеш компонентов или же его же и используйте
__________________
...