![]() |
Кастомные стили Flex компоненты
Я пытаюсь добавить кастомных стилей к компоненте расширяющей mx:Panel. Вот что я делаю:
Файлик skin.css Код:
.videoPanelКод:
<mx:Style source="skin.css"/>Код:
[Style(name="someStyle",type="String",inherit="no")]Проблема в отм, что брейкпоин не достигается. В любом случае даже если я ставлю брейкпоинт на строчку super.styleChanged(styleProp); и смотрю значение styleProp, - оно null оба раза, когда там останавливается дебаггер. Но стиль borderSkin (который родной для mx:Panel) к моей компоненте применяется, даже при том условии, что самое значение "borderSkin" никогда не проходит через методstyleChanged(). Я понимаю работу со стилями неправильно? Как стиль borderSkin может примениться к компоненте, если он никогда не проходил через методstyleChanged()? И как мне заставить мой "someStyle" примениться к моей компоненте ? Any help is appreciated. PS: I've read the entire part of Adobe Create And Extend Flex 3 Components book about styling... But it didn't help me. |
Цитата:
|
Этот метод применяется для доступа к стилям раньше вызовов measure() и updateDisplayList(...). Мне же нужно правильно передать стили из CSS в компоненту, и отследить изменения. Не понимаю, почему styleChanged() не срабатывает. И честно гвооря абсолютно не понял какое отношение метод stylesInitialized() имеет к моей проблеме.
|
Из того, что я понял... нужно вызвать setStyle() у компонента, а не у стиля, тогда работает, как и ожидалось, вот только как отреагировать на присвоение другого класса (а не изменения отдельного свойства) я тож, если чесно, так и не понял =)
Не знаю, умом это не понять... а зачем это все было нужно? И вообще не понял, зачем нужен styleChanged если можно спокойно оверрайдить setStyle и при этом будут все нужные данные, да и понятнее это как-то... |
О логичности свои действий спорить не стану) Эт я вычитал в Adobe Create and Extend Flex Components... Честно говоря я был бы рад, если б мне дали какой то нормальный туториал о том, как правильно делать то, чего я хочу:)
|
Так а что собственно нужно сделать? Если чесно, на сколько я понял назначение styleChanged(), то это нужно для того, чтобы, скажем, вы создаете компонент, описываете стили, которые ему можно назначить, а в этом методе можно прореагировать на их добавление (т.е. скорее всего стили будут назначать пользователи вашего компонента, а не вы сами). Но, опять же, можно было легко обойтись setStyle()... Как бы я имел в виду логичность того, что происходит во фреймворке, а не этот конкретный пример =)
|
Цитата:
Цитата:
|
А как правильнее задать дефолтные значение моим стилям? От-оверрайдить stylesInitialized() и поставить туда setStyle()'ы ?
Может есть у кого ссылочка на ресурс, где от А до Я написано как грамотно провести процесс добавления и кастомных стилей и реакции на них? Почесал гугл, честно говоря ничего стоящего не нашёл. А то начитался Adobe доков, а тут другое советуют :) |
Цитата:
Код:
override public function styleChanged(styleProp:String) |
Не знаю, я бы просто оверрайдил setStyle и getStyle, а муть с инициализацией, ИМО, никому не нужна... с таким же успехом можно было бы еще разделить переназначение стилей на те, которые присваивают числовые значения и строковые / массивы и т.п... чесно, глубокий смысл этих методов понятен только человеку их написавшему...
|
Цитата:
|
Как-то неубедительно =) особенно в свете того, что речь идет об компонентах mx :)
|
| Часовой пояс GMT +4, время: 19:48. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.