![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 44
|
Я пытаюсь добавить кастомных стилей к компоненте расширяющей mx:Panel. Вот что я делаю:
Файлик skin.css Внутри mxml'ки: И в файлике VideoPanel.as у меня: [Style(name="someStyle",type="String",inherit="no")]
public class VideoPanel extends Panel
{
private static var classConstructed:Boolean = classConstract();
private static var classConstruct():Boolean
{
if( StyleManager.getStyleDeclaration("VideoPanel") == null )
{
var newStyle:CSSStyleDeclaration = new CSSStyleDeclaration();
newStyle.setStyle("someStyle","HelloWorld")
StyleManager.setStyleDeclaration("VideoPanel",newStyle,true);
}
return true;
}
override public function styleChanged(styleProp:String)
{
super.styleChanged(styleProp);
if( styleProp=="someStyle" )
{
// тут стоит breakpoint
}
}
...
}
Проблема в отм, что брейкпоин не достигается. В любом случае даже если я ставлю брейкпоинт на строчку 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.
__________________
hell no ! Последний раз редактировалось romantique; 13.10.2008 в 11:54. |
|
|||||
|
Регистрация: Apr 2008
Сообщений: 102
|
Цитата:
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 44
|
Этот метод применяется для доступа к стилям раньше вызовов measure() и updateDisplayList(...). Мне же нужно правильно передать стили из CSS в компоненту, и отследить изменения. Не понимаю, почему styleChanged() не срабатывает. И честно гвооря абсолютно не понял какое отношение метод stylesInitialized() имеет к моей проблеме.
__________________
hell no ! |
|
|||||
|
Регистрация: Apr 2008
Сообщений: 102
|
Цитата:
Цитата:
|
|
|||||
|
Modus ponens
|
Из того, что я понял... нужно вызвать setStyle() у компонента, а не у стиля, тогда работает, как и ожидалось, вот только как отреагировать на присвоение другого класса (а не изменения отдельного свойства) я тож, если чесно, так и не понял =)
Не знаю, умом это не понять... а зачем это все было нужно? И вообще не понял, зачем нужен styleChanged если можно спокойно оверрайдить setStyle и при этом будут все нужные данные, да и понятнее это как-то...
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 13.10.2008 в 15:00. |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 44
|
О логичности свои действий спорить не стану) Эт я вычитал в Adobe Create and Extend Flex Components... Честно говоря я был бы рад, если б мне дали какой то нормальный туториал о том, как правильно делать то, чего я хочу
![]()
__________________
hell no ! |
|
|||||
|
Modus ponens
|
Так а что собственно нужно сделать? Если чесно, на сколько я понял назначение styleChanged(), то это нужно для того, чтобы, скажем, вы создаете компонент, описываете стили, которые ему можно назначить, а в этом методе можно прореагировать на их добавление (т.е. скорее всего стили будут назначать пользователи вашего компонента, а не вы сами). Но, опять же, можно было легко обойтись setStyle()... Как бы я имел в виду логичность того, что происходит во фреймворке, а не этот конкретный пример =)
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 44
|
А как правильнее задать дефолтные значение моим стилям? От-оверрайдить stylesInitialized() и поставить туда setStyle()'ы ?
Может есть у кого ссылочка на ресурс, где от А до Я написано как грамотно провести процесс добавления и кастомных стилей и реакции на них? Почесал гугл, честно говоря ничего стоящего не нашёл. А то начитался Adobe доков, а тут другое советуют ![]()
__________________
hell no ! |
|
|||||
|
Регистрация: Apr 2008
Сообщений: 102
|
Цитата:
|
|
|||||
|
Modus ponens
|
Не знаю, я бы просто оверрайдил setStyle и getStyle, а муть с инициализацией, ИМО, никому не нужна... с таким же успехом можно было бы еще разделить переназначение стилей на те, которые присваивают числовые значения и строковые / массивы и т.п... чесно, глубокий смысл этих методов понятен только человеку их написавшему...
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:46. |
|
|
« Предыдущая тема | Следующая тема » |
|
|