среда, августа 06, 2008

Список без подсветки и выделения элементов. Flex

Элементарная задача - есть компонент список (в моем случае - это TileList). Его элементы (itemRenderer'ы) сами обрабатывают мышиные события наведения/нажатия. Нужно, чтобы сам компонент списка не делал никаких подсветок и выделений элементов.
Казалось бы - тривиальная задача. Ничего подобного.
Одними стилями этого не сделать, что лишний раз доказывает несовершенство механизма скинирования Flex.
Решение - создание потомка и перекрытие методов:
protected function drawSelectionIndicator(...) и protected function drawHighlightIndicator(...)
Код прилагается.

Посильную помощь в раскопках оказала статья: Flex Tutorial - Image ItemRenderer.

Не понимаю, почему в одних случаях модель цвета #RRGGBBAA реализована, а в других - только #RRGGBB? Ведь как было бы удобно просто задать стиль themeColor="#00000000" и не парить мозг?

4 комментария:

Unknown комментирует...

Хм. А selectable=false для списка не помогает? Или все хитрее?

Анонимный комментирует...

Нормальный способ реализации.

Он и позволяет тебе использовать всевозможные компоненты в качестве айтем рендеров.

Unknown комментирует...

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

Unknown комментирует...

2 Constantiner пишет...
> А selectable=false для списка не помогает?

Помогает :)
Только как насчет таких прелестей списка как selectedItem? Оно будет всегда null. И опять прийдется идти на хитрости ;)