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

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

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

Регистрация: May 2008
Сообщений: 52
Question Разноцветный фон ячеек List

День добрый!
Задача следующая: настроить компонент List так чтобы фон каждой строки был персонального цвета, передаваемого в DataProvider.

Сейчас работает так:
Код AS3:
myList.setStyle('cellRenderer', ListCellRenderer);
Код AS3:
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();
        }		
}
Проблема в том что цветов у меня очень много и для каждого создавать мувиклип-class неприемлимо.

Мои неудачные домыслы как обойти эту проблему:
1. Передать параметр классу
Код AS3:
setStyle("upSkin",CustomBackground(data.bgColor));
- но так делать нельзя
2. Переписать функцию drawBackground - но, не зная исходный код тупо рисование на this.graphics в CellRenderer - не вызывая ошибки никаких видимых результатов не дает.

Подскажите кто знает как эту проблему обойти\решить?

Старый 17.12.2008, 16:51
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
можно по-простому применить к бэкграунду ColorMatrixFilter, параметры которого считать для data.bgColor, примеров как посчитать полно, я тестил со своим классом, под такие вещи и заточенным
Код AS3:
override protected function drawBackground():void {
 
	super.drawBackground();
 
	var clrMtrx:ColorMatrix = new ColorMatrix();//http://silin.fatal.ru/#AS3/filters/color
	clrMtrx.colorize(data.bgColor, 1);
	background.filters = [clrMtrx.filter];
 
}

Старый 18.12.2008, 09:02
Aldvin вне форума Посмотреть профиль Отправить личное сообщение для Aldvin Найти все сообщения от Aldvin
  № 3  
Ответить с цитированием
Aldvin

Регистрация: May 2008
Сообщений: 52
Большое спасибо за подсказку.
Теперь, зная что долбить нужно "background" сделал так:
Код AS3:
var colorInfo:ColorTransform = background.transform.colorTransform;
colorInfo.color = data.bgColor;
background.transform.colorTransform=colorInfo;
Всё работает. Ещё раз спасибо!

Старый 18.12.2008, 20:05
Fleaxa вне форума Посмотреть профиль Отправить личное сообщение для Fleaxa Найти все сообщения от Fleaxa
  № 4  
Ответить с цитированием
Fleaxa

Регистрация: Nov 2007
Сообщений: 25
to Aldvin

Могу я попросить выложить пример вашего кода. Пытаюсь написать нечто подобное, но все время вылазят ошибки. Не могу понять их природу. (((

Старый 19.12.2008, 09:05
Aldvin вне форума Посмотреть профиль Отправить личное сообщение для Aldvin Найти все сообщения от Aldvin
  № 5  
Ответить с цитированием
Aldvin

Регистрация: May 2008
Сообщений: 52
to Fleaxa
Весь Source код выложить не могу т.к. это часть большой RIA, но попытаюсь расписать подробнее:
Для начала перетаскиваем из панели компонентов в библиотеку компонент List
В классе где создаем List:
Код AS3:
import fl.controls.List;
...
// Если создаем List программно то -->
var myList:List = new List();
addChild(myList);
// <--Если создаем List программно то
 
myList.setStyle('cellRenderer', ListStyleRenderer);
Ну и собственно класс ListStyleRenderer.as:
Код AS3:
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;
		}		
                // <-- Либо вместо скинов покрасить бэкграунд
	}
}
Вроде все

Старый 19.12.2008, 15:40
Fleaxa вне форума Посмотреть профиль Отправить личное сообщение для Fleaxa Найти все сообщения от Fleaxa
  № 6  
Ответить с цитированием
Fleaxa

Регистрация: Nov 2007
Сообщений: 25
Очень сильно благадарю. ))) Нашел ошибку.

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

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

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


 


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


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