![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2008
Сообщений: 52
|
День добрый!
Задача следующая: настроить компонент List так чтобы фон каждой строки был персонального цвета, передаваемого в DataProvider. Сейчас работает так: class ListCellRenderer extends CellRenderer { public var customProperty:String = "foo"; public function ComboStyleRenderer() { var originalStyles:Object = CellRenderer.getStyleDefinition(); } override protected function drawBackground():void { switch(data.bgColor){ case "green": setStyle("upSkin",CustomBackground1); break; case "red": setStyle("upSkin",CustomBackground2); break; default: break; } super.drawBackground(); } } Мои неудачные домыслы как обойти эту проблему: 1. Передать параметр классу - но так делать нельзя 2. Переписать функцию drawBackground - но, не зная исходный код тупо рисование на this.graphics в CellRenderer - не вызывая ошибки никаких видимых результатов не дает. Подскажите кто знает как эту проблему обойти\решить? |
|
|||||
|
можно по-простому применить к бэкграунду ColorMatrixFilter, параметры которого считать для data.bgColor, примеров как посчитать полно, я тестил со своим классом, под такие вещи и заточенным
|
|
|||||
|
Регистрация: May 2008
Сообщений: 52
|
Большое спасибо за подсказку.
Теперь, зная что долбить нужно "background" сделал так: Всё работает. Ещё раз спасибо! |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 25
|
to Aldvin
Могу я попросить выложить пример вашего кода. Пытаюсь написать нечто подобное, но все время вылазят ошибки. Не могу понять их природу. ((( |
|
|||||
|
Регистрация: May 2008
Сообщений: 52
|
to Fleaxa
Весь Source код выложить не могу т.к. это часть большой RIA, но попытаюсь расписать подробнее: Для начала перетаскиваем из панели компонентов в библиотеку компонент List В классе где создаем List: import fl.controls.List; ... // Если создаем List программно то --> var myList:List = new List(); addChild(myList); // <--Если создаем List программно то myList.setStyle('cellRenderer', ListStyleRenderer); package { import fl.controls.listClasses.CellRenderer; import flash.geom.ColorTransform; class ListStyleRenderer extends CellRenderer { public var customProperty:String = "foo"; public function ListStyleRenderer() { var originalStyles:Object = CellRenderer.getStyleDefinition(); // Можно либо задать скины --> // Здесь WhiteBackground, итп - мувиклипы с выставлеными Linkage --> Classes --> WhiteBackground setStyle("upSkin",WhiteBackground); setStyle("downSkin",GreenBackground); setStyle("overSkin",LightGreenBackground); setStyle("selectedUpSkin",GreenBackground); setStyle("selectedDownSkin",GreenBackground); setStyle("selectedOverSkin",GreenBackground); // <-- Можно либо задать скины } // Либо вместо скинов покрасить бэкграунд --> override protected function drawBackground():void { super.drawBackground(); var colorInfo:ColorTransform = background.transform.colorTransform; colorInfo.color = data.bgColor; // Любой цвет background.transform.colorTransform=colorInfo; } // <-- Либо вместо скинов покрасить бэкграунд } } |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 25
|
Очень сильно благадарю. ))) Нашел ошибку.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 03:18. |
|
|
« Предыдущая тема | Следующая тема » |
|
|